PDF.chat API
Alŝutu PDF-on kaj chat kun ĝi el via propra aplikaĵo - demandi demandojn kaj ricevi respondojn cititajn al la paĝo, en pli ol 100 lingvoj. Mezurita per paĝo, sen surprizoj.
Overview
La PDF.chat API estas malgranda REST-interfaco. Unue vi POST dokumenton por enigi ĝin kaj ricevi laboron kun la dokumentoteksto kaj paĝa disdivido (teksto, limskatoloj, konfido). Poste vi povas POST demandoj kontraŭ tiu tasko kaj ricevi respondojn bazitajn en la dokumento, ĉiu citante la paĝon de kiu ĝi venis. Taskoj de 5 paĝoj aŭ malpli revenas enlinie; pli grandaj taskoj revenas tuj kun pending status that you poll until done.
- Baza URLo:
https://pdf.chat - Dokumentoj en: PDF, plus Word, PowerPoint, teksto kaj bildoj (PNG, JPG, WEBP, GIF, BMP, TIFF)
- Chat el: respondoj kun paĝcitadoj; transskriboj tra la historiofinpunkto
- Procezita teksto el:
txt,md,docx,pdf,csv,json - Legi motorojn:
cpu(rapidaj, presitaj dokumentoj) kajvlm(supera AI, manskribo, kompleksa aranĝo, matematiko)
Aŭtentigo
Aŭtentigu per via API-tokeno (trovu ĝin sur via kontopaĝo) kiel portanta kapo:
Authorization: Bearer YOUR_API_TOKEN
Vi povas ankaŭ pasigi ?api_token=… kiel serĉparametro. La uzo estas mezurata kontraŭ la paĝsaldo de via konto.
Sendi dokumenton
POST /api/v1/ocr/, & Alŝuti
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"
Redonas la taskon. Por dosieroj ≤5- paĝaj ĝi jam estas done kun la teksto; pli grandaj dosieroj revenas pending/processing, demandi la statofinpunkton.
{
"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 } ] } ]
}
Ricevi rezulton
GET /api/v1/ocr/<uuid>/, demandi ĝis status estas done aŭ failed.
curl https://pdf.chat/api/v1/ocr/9f2c1b7e4a.../ \
-H "Authorization: Bearer YOUR_API_TOKEN"
Elŝuti formaton
GET /api/v1/ocr/<uuid>/download/?format=md, Eksporti la rezulton. format estas unu el 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 kun dokumento
Fari demandojn pri finita tasko. Respondoj estas bazitaj nur en la ekstraktita teksto kaj citas la fontopaĝon. Bezonas kont- token, la chat funkcio estas konto- pordita.
POST /api/v1/chat/<uuid>/, JSON korpo {"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?"}'
Redonas la helpan mesaĝon kun respondo kaj listo de cititaj paĝoj:
{"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/, fetch the full conversation transcript for a job.
Kodekzemploj
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?"}'
Parametroj
| Kampo | Tipo | Description |
|---|---|---|
file | file | Necesa. La bildo aŭ PDF traktenda. |
tier | string | cpu (default, fast/printed) aŭ vlm (premia AI: manskribo, aranĝo, matematiko). |
language | string | auto (default) aŭ lingvokodo (en, ch, ja, ar, …). |
tool | string | Laŭ la ĵurnalo "Esperanto" (nr. summarize-pdf, ask-pdfLa chat estis la unua procesoro de la firmao. |
Eraroj kaj limoj
| Kodo | Signifo |
|---|---|
400 | Neniu dosiero, nesubtenata tipo, aŭ dosiero tro granda. |
401 | Mankanta aŭ nevalida API-tokenaĵo. |
402 | Ne plu estas paĝoj, atingita ĉiutaga/monata libera limigo, aŭ neniu kredito. La korpo inkluzivas used/cap. |
404 | Ne trovis taskon UUID. |
409 | Elŝutita |
Ĉiu paĝo prilaborita kostas kreditojn (1/ paĝo ĉe rapida nivelo, pli ĉe premium). Pagitaj planoj pliigas la maksimumon de paĝoj po dosiero kaj aldonas prioritaton. Vidu pricing.
Oftaj demandoj
language=auto por detekti, aŭ transdoni specifan kodon.