PDF.chat API
Ngarko një PDF dhe chat me të nga aplikimi juaj. Bëni pyetje dhe merrni përgjigje të cituara në faqe, në më shumë se 100 gjuhë. Matur për faqe, pa surpriza.
Përmbledhja
API PDF.chat është një ndërfaqe e vogël REST. Së pari ju POST një dokument për ta marrë atë dhe të kthehet një punë me tekstin e dokumentit dhe një shpërndarje për faqe (tekst, kuti kufizuese, besueshmëri). Pastaj ju POST pyetje kundër atij punës dhe merr përgjigjet e bazuara në dokument, secila duke cituar faqen nga e cila vjen. Punët me 5 faqe ose më pak kthehen në rresht; punët më të mëdha kthehen menjëherë me një pending status done.
- URL e bazë:
https://pdf.chat - Dokumentet në: PDF, plus Word, PowerPoint, tekst dhe imazhe (PNG, JPG, WEBP, GIF, BMP, TIFF)
- Chat jashtë: përgjigje me citime faqesh; transkripte nëpërmjet pikës së fundit të historisë
- Teksti i përpunuar jashtë:
txt,md,docx,pdf,csv,json - Motorët e leximit:
cpu(dokumente të shpejta, të shtypura) dhevlm(AI premium, shkrim me dorë, strukturë komplekse, matematikë)
Autentifikim
Autentikohu me Token API (Gjej atë në Faqja e llogarisë) si një header Bearer:
Authorization: Bearer YOUR_API_TOKEN
Mund të kalosh edhe ?api_token=… si parametri i kërkesës. Përdorimi matët me balancin e faqes të llogarisë suaj.
Dërgo një dokument
POST /api/v1/ocr/, ngarko formën me shumë pjesë.
curl -X POST https://pdf.chat/api/v1/ocr/ \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-F "file=@invoice.pdf" \
-F "tier=vlm" \
-F "language=auto"
Kthen punën. Për file ≤5-faqe është tashmë done me tekstin; kthehen file më të mëdhenj pending/processing, pyet pikën e fundit të gjendjes.
{
"uuid": "9f2c1b7e4a...",
"status": "done",
"tier": "vlm",
"language": "auto",
"page_count": 1,
"mean_confidence": 0.98,
"text": "INVOICE\nAcme Corp\nTotal: 215.00 USD",
"markdown": "# INVOICE\n\n**Acme Corp** ...",
"pages": [ { "index": 0, "text": "...", "blocks": [ { "text": "...", "bbox": [x0,y0,x1,y1], "confidence": 0.98 } ] } ]
}
Marr një rezultat
GET /api/v1/ocr/<uuid>/, pyetje deri status është done ose failed.
curl https://pdf.chat/api/v1/ocr/9f2c1b7e4a.../ \
-H "Authorization: Bearer YOUR_API_TOKEN"
Shkarko një format
GET /api/v1/ocr/<uuid>/download/?format=md, eksporto rezultatin. format është një nga txt, md, docx, pdf, csv, json.
curl -L "https://pdf.chat/api/v1/ocr/9f2c1b7e4a.../download/?format=docx" \
-H "Authorization: Bearer YOUR_API_TOKEN" -o result.docx
Chat me një dokument
Bëj pyetje rreth një pune të përfunduar. Përgjigjet bazohen vetëm në tekstin e nxjerrë dhe citojnë faqen burimore. Kërkon një token të llogarisë, funksioni chat është i lidhur me llogarinë.
POST /api/v1/chat/<uuid>/, Korpi JSON {"message": "your question"}.
curl -X POST https://pdf.chat/api/v1/chat/9f2c1b7e4a.../ \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"message": "What is the invoice total and due date?"}'
Kthen mesazhin e ndihmës me përgjigjen e tij dhe një listë të faqes së cituar:
{"conversation": "a1b2…", "message": {
"role": "assistant",
"content": "The total is $42, due on March 3 (p. 1).",
"citations": [{"page": 1, "cited_text": "The invoice total is $42…", "document_id": "9f2c1b7e4a…"}]
}}
GET /api/v1/chat/<uuid>/history/, të marr të gjithë bisedat për një punë.
Shembuj kodi
import requests, time
BASE = "https://pdf.chat/api/v1"
H = {"Authorization": "Bearer YOUR_API_TOKEN"}
# 1. Upload a PDF
with open("contract.pdf", "rb") as f:
job = requests.post(BASE + "/ocr/", headers=H, files={"file": f}).json()
# 2. Wait until it's ready to chat
while job["status"] in ("pending", "processing"):
time.sleep(2)
job = requests.get(f"{BASE}/ocr/{job['uuid']}/", headers=H).json()
# 3. Ask questions: every answer is cited to the page
ans = requests.post(f"{BASE}/chat/{job['uuid']}/", headers=H,
json={"message": "What is the termination notice period?"}).json()
print(ans["message"]["content"])
print(ans["message"]["citations"])
import fs from "fs";
const BASE = "https://pdf.chat/api/v1";
const H = { Authorization: "Bearer YOUR_API_TOKEN" };
// 1. Upload a PDF
const form = new FormData();
form.append("file", new Blob([fs.readFileSync("contract.pdf")]), "contract.pdf");
let job = await (await fetch(`${BASE}/ocr/`, { method: "POST", headers: H, body: form })).json();
// 2. Wait until it's ready to chat
while (["pending", "processing"].includes(job.status)) {
await new Promise(r => setTimeout(r, 2000));
job = await (await fetch(`${BASE}/ocr/${job.uuid}/`, { headers: H })).json();
}
// 3. Ask questions: every answer is cited to the page
const ans = await (await fetch(`${BASE}/chat/${job.uuid}/`, {
method: "POST", headers: { ...H, "Content-Type": "application/json" },
body: JSON.stringify({ message: "What is the termination notice period?" })
})).json();
console.log(ans.message.content, ans.message.citations);
# 1. Upload a PDF
curl -X POST https://pdf.chat/api/v1/ocr/ \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-F "file=@contract.pdf"
# 2. Ask questions (use the uuid from step 1): answers cited to the page
curl -X POST https://pdf.chat/api/v1/chat/UUID/ \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"message": "What is the termination notice period?"}'
Parametrat
| Fusha | Lloji | Përshkrimi |
|---|---|---|
file | file | E nevojshme. Figura ose PDF për t'u përpunuar. |
tier | string | cpu (i prezgjedhur, i shpejtë/i printuar) ose vlm (AI premium: shkrimi me dorë, hartimi, matematika). |
language | string | auto (e prezgjedhur) ose një kod gjuhe (en, ch, ja, ar, …). |
tool | string | Një mjet opcional (p.sh. summarize-pdf, ask-pdf) për të para-frame chat për atë detyrë. |
Gabime
| Kodi | Kuptimi |
|---|---|
400 | Asnjë file, lloj i pasuportuar ose file shumë i madh. |
401 | Token i munguar apo i pavlefshëm API. |
402 | Pa faqe, kufijtë e përditshëm/mujorë të lirë të arritur, ose pa kreditë. Korpusi përfshin used/cap. |
404 | UUID e punës nuk u gjet. |
409 | Shkarkimi u kërkua para se të përfundonte detyra. |
Çdo faqe e përpunuar kushton kredite (1/faqe në nivelin e shpejtë, më shumë në premium). Planet e paguar rrisin kufijtë e faqes për file dhe shtojnë përparësinë. Shiko çmimi.
Pyetja e shpeshtë
language=auto për të zbuluar, ose për të kaluar një kod të veçantë.