PDF.chat API

Încărcaţi un PDF şi chat cu el de la propria aplicaţie — puneţi întrebări şi primiţi răspunsuri citate la pagina, în 100 de limbi. Meditate pe pagina, fără surprize.

Aviz general

PDF.chat API este o interfață REST mică. POST un document pentru a ingera și a obține înapoi o slujbă cu textul documentului și o defalcare pe pagina (text, cutii de limită, încredere). Apoi tu POST Întrebări împotriva acestui loc de muncă și obține răspunsuri bazate pe document, fiecare citand pagina de la care a venit. Joburi de 5 pagini sau mai puține returnare inline; locuri de muncă mai mari se returează imediat cu un pending statusul pe care îl sondezi până done.

  • URL de bază: https://pdf.chat
  • Documente în: PDF, plus Word, PowerPoint, text și imagini (PNG, JPG, WEBP, GIF, BMP, TIFF)
  • Chat afară: răspunsuri cu citații de pagină; tranșe prin endpointul istoric
  • Textul procesat: txt, md, docx, pdf, csv, json
  • Motoare de citire: cpu (docuri rapide, tipărite) și vlm (Premium AI, scris, layout complex, matematică)

Autentificare

Autentificaţi-vă cu Token API (găseşte-l pe tine pagina conturilor) ca un header Bearer:

Authorization: Bearer YOUR_API_TOKEN

Puteți trece și ?api_token=… ca parametr de cerere. Utilizarea este măsurată în raport cu soldul de pagină al contului.

Trimite un document

POST /api/v1/ocr/, formular multipart încărcare.

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"

Returnează treaba. Pentru fișierele ≤5-page este deja done cu textul; fișiere mai mari se întorc pending/processing, sondajul de stare a punctului final.

{
  "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 } ] } ]
}

Obţine un rezultat

GET /api/v1/ocr/<uuid>/, sondaj până la status este done sau failed.

curl https://pdf.chat/api/v1/ocr/9f2c1b7e4a.../ \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Descărcați un format

GET /api/v1/ocr/<uuid>/download/?format=md, exportul rezultatului. format este una din 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 cu un document

Pune întrebări despre o slujbă terminată. Răspunsurile sunt bazate doar în textul extras și citează pagina sursă. Necesită un semn de cont, caracteristica chat este încadrată în cont.

POST /api/v1/chat/<uuid>/, Corpul 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?"}'

Returnează mesajul asistent cu răspunsul său și o listă a paginilor citate:

{"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/, Ia transcrierea completă a conversaţiei pentru o slujbă.

Exemple de cod

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?"}'

Parametri

CâmpulTipDescriere
filefileE necesar. Imaginile sau PDF de procesat.
tierstringcpu (defect, rapid/imprimat) sau vlm (Premium AI: scrisul, layout, matematică).
languagestringauto (indictul) sau un cod limbi (en, ch, ja, ar,...).
toolstringUnelte opționale (de exemplu summarize-pdf, ask-pdf) să pre-framele chat pentru această sarcină.

Eroare & limite

CodulÎnseamnă
400Niciun fișier, tip nesuportat sau un fișier prea mare.
401Token API lipsă sau nu.
402Din pagini, limita gratuită zilnică/mensual atins sau nu credite. Corpul include used/cap.
404Job UUID nu a fost găsit.
409Descărcare solicitată înainte de a termina treaba.

Fiecare pagină a prelucrat creditele costurilor (1/pagina pe gradul rapid, mai mult pe premium). Planurile plătite ridică capacurile de pagină per fișier și adaugă prioritate. Prețurile.

Întrebări frecvente

Creează un cont gratuit și deschideți pagina conturilor, tokenul este afișat acolo cu un buton de copiere.

Da, fișierele de 5 pagini sau mai puțin returnează toate rezultatele inline în răspunsul POST, astfel încât nu este necesară sondaj pentru majoritatea imaginilor și PDF-uri scurte.

Peste 100, inclusiv scripturi latine, CJK, arabe, cirilică și indică. Utilizare language=auto pentru a detecta sau a trece un cod specific.

Încărcările sunt procesate doar pentru a răspunde întrebărilor tale și eliminate automat. Nu vindem, împărtășim sau antrenăm pe documentele dumneavoastră.

Utilizarea este măsurată pe pagina în raport cu soldul contului dumneavoastră: apeluri anonim obține o alocație zilnică per-IP, conturi gratuite o găleată lunară, și planurile plătite folosesc credite achiziționate cu capacuri de pagina mai mari per-fișier și prioritate. Când se scurge obține un 402 cu capac folosit și în organism.

Puteți trimite PNG, JPG, WEBP, GIF, BMP, TIFF și PDF multi-pagini. Rezultatele se descărcă ca txt, md, docx, pdf (luat), csv sau json prin intermediul parametrului formatului endpoint de descărcare.

400 este un fișier lipsă, tip nesuportat, sau fișier prea mare; 401 un token lipsă sau invalid; 402 din pagini; 404 un job necunoscut UUID; și 409 o descărcare solicitată înainte de finalizarea sarcinii. Organismele de eroare includ un mesaj scurt.

Un obiect de lucru cu stare, nivel, limba, pagina_conta, și media_credere, plus textul complet și marcare. Paginile rupe fiecare pagină în blocuri cu textul lor, cutie de limitări (bbox), și încredere per bloc.

Folosește cpu (defect) pentru recunoașterea rapidă, la preț scăzut a documentelor tipărite curate. Utilizați vlm, motorul premium AI, pentru scrisul mână, layout complex sau multi-columna, matematică și traducere, unde este mult mai precis.

Un instrument de trecere cu un slug (de exemplu rezumatul-pdf sau cer-pdf) pentru a pre-frame chat pentru această sarcină, astfel încât asistentul este ajustat pentru a rezuma sau a răspunde la întrebări despre document.

Fișiere de 5 pagini sau mai puține return inline în răspunsul POST. Fișiere mai mari vin imediat ca în pendente sau prelucrare, și tu sondaje GET /api/v1/ocr /<uuid>/ până când starea este făcută sau eșuat. Planurile plătite ridică capacul de pagină per-fisier.

API este REST simplu peste HTTPS, astfel încât funcționează din orice limbă cu un client HTTP, a se vedea exemplele Python, Node.js și cURL de mai sus. Nu există nici un SDK de instalat; câteva linii de cod HTTP standard sunt tot ce ai nevoie.