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) kaj vlm (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 donefailed.

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

KampoTipoDescription
filefileNecesa. La bildo aŭ PDF traktenda.
tierstringcpu (default, fast/printed) aŭ vlm (premia AI: manskribo, aranĝo, matematiko).
languagestringauto (default) aŭ lingvokodo (en, ch, ja, ar, …).
toolstringLaŭ la ĵurnalo "Esperanto" (nr. summarize-pdf, ask-pdfLa chat estis la unua procesoro de la firmao.

Eraroj kaj limoj

KodoSignifo
400Neniu dosiero, nesubtenata tipo, aŭ dosiero tro granda.
401Mankanta aŭ nevalida API-tokenaĵo.
402Ne plu estas paĝoj, atingita ĉiutaga/monata libera limigo, aŭ neniu kredito. La korpo inkluzivas used/cap.
404Ne trovis taskon UUID.
409Elŝ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

Kreu senpage konton kaj malfermu vian kontopaĝo, your token is shown there with a copy button.

Jes, dosieroj de 5 paĝoj aŭ malpli redonas la plenan rezulton en la POST- respondo, do ne necesas enketado por plej multaj bildoj kaj mallongaj PDF- dosieroj.

Pli ol 100, inkluzive de latina, CJK, araba, cirila kaj hinda skribsistemoj. Use language=auto por detekti, aŭ transdoni specifan kodon.

Alŝutoj estas traktitaj nur por respondi viajn demandojn kaj aŭtomate forigitaj. Ni neniam vendas, kunhavas aŭ trejnas pri viaj dokumentoj.

La uzo estas mezurata laŭ paĝo kontraŭ via kontbalanso: anonimaj vokoj ricevas ĉiutagan permeson laŭ IP, senpagaj kontoj ricevas monatan permeson, kaj pagaj planoj uzas aĉetitajn kreditojn kun pli altaj maksimumoj kaj prioritatoj por ĉiu dosierpaĝo. Kiam vi elĉerpiĝas, vi ricevas 402 kun uzita kaj maksimumo en la korpo.

Vi povas sendi PNG, JPG, WEBP, GIF, BMP, TIFF, kaj plurpaĝan PDF. La rezultoj elŝuteblas kiel txt, md, docx, pdf (serĉebla), csv, aŭ json per la formatoparametro de la elŝuta fino.

400 estas mankanta dosiero, ne subtenata tipo, aŭ dosiero tro granda; 401 mankanta aŭ nevalida signo; 402 ne estas paĝoj; 404 nekonata tasko- UUID; kaj 409 peto por elŝuto antaŭ la tasko finiĝis. Eraroj enhavas mallongan mesaĝon.

Taskoobjekto kun stato, nivelo, lingvo, paĝo_ nombro, kaj averaĝa_ konfido, plus la plena teksto kaj marko. La paĝaro dividas ĉiun paĝon en blokojn kun ties teksto, limigita kadro (bbox), kaj bloka konfido.

Uzi CPU (la defaŭlta) por rapida, malmultekosta rekono de puraj presitaj dokumentoj. Uzi vlm, la altnivela AI- motoro, por manskribo, kompleksaj aŭ plurkolumnaj aranĝoj, matematiko, kaj traduko, kie ĝi estas multe pli preciza.

La chat estas la unua procesoro de la firmao Intel, kiu havis la kapablon prilabori PDF-dokumentojn (PDF estas mallongigo de la angla vorto "document"), kaj la unua procesoro kiu povis prilabori PDF-dokumentojn.

Dosieroj de 5 paĝoj aŭ malpli estas redonitaj en la POST-respondo. Pli grandaj dosieroj estas tuj redonitaj kiel atendantaj aŭ prilaborataj, kaj vi demandas GET /api/v1/ocr/<uuid>/ ĝis la stato estas farita aŭ malsukcesa. Pagitaj planoj pliigas la maksimuman nombron de paĝoj por dosiero.

La API estas simpla REST super HTTPS, do ĝi funkcias el iu ajn lingvo kun HTTP-kliento, vidu la ekzemplojn Python, Node. js, kaj cURL supre. Ne estas instalenda SDK; kelkaj linioj de norma HTTP-kodo estas ĉio kion vi bezonas.