PDF.chat API
Išsiųskite PDF ir chat su juo iš savo app — užduoti klausimus ir gauti atsakymus į nurodytus puslapyje, 100+ kalbomis. Metered per puslapį, jokių staigmenų.
Apžvalga
PDF.chat API yra maža REST sąsaja. Pirmas POST dokumentas, kuriuo jis įsimaišys ir bus grąžintas į darbą su dokumento tekstu ir suskirstymu per puslapį (tekstas, susiejimo laukeliai, pasitikėjimas). Tada Jūs POST klausimai prieš šį darbą ir gauti atsakymus pagrįstas dokumente, kiekvienas nurodymas puslapio jis atėjo iš. Darbo vietos 5 puslapiai ar mažiau grįžti į internetą; didesni darbai grįžti iš karto su pending būsena, kad jūs apklausos iki done.
- Pagrindinis URL:
https://pdf.chat - Dokumentai: PDF, plius žodis, PowerPoint, tekstas, ir paveikslėliai (PNG, JPG, WEBP, GIF, BMP, TIFF)
- Chat out: atsakymai su puslapio citatomis; stenogramos per istorijos vertinamąją baigtį
- Išbrauktas tekstas:
txt,md,docx,pdf,csv,json - Skaitytuvai:
cpu(greiti spausdinti dokai) irvlm(pirminė AI, rašyba ranka, sudėtingas išdėstymas, matematika)
Autentikacija
Autentifikuoti savo API žetonas (nustatykite ant paskyros puslapis) kaip kabinos antraštė:
Authorization: Bearer YOUR_API_TOKEN
Taip pat galite perduoti ?api_token=… kaip užklausos parametras. Naudojimas matuojamas pagal jūsų sąskaitos puslapio balansą.
Pateikti dokumentą
POST /api/v1/ocr/, Daugiadalis forma įkelti.
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"
Grąžina darbą. ≤5 puslapių failams tai jau done su tekstu; didesni failai grįžta pending/processing, apklausti būklės vertinamąją baigtį.
{
"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 } ] } ]
}
Gaukite rezultatą
GET /api/v1/ocr/<uuid>/, apklausa iki status st done arba failed.
curl https://pdf.chat/api/v1/ocr/9f2c1b7e4a.../ \
-H "Authorization: Bearer YOUR_API_TOKEN"
Atsiųsti formatą
GET /api/v1/ocr/<uuid>/download/?format=md, eksportuoja rezultatą. format yra vienas iš 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 su dokumentu
Užduoti klausimus apie baigtą darbą. Atsakymai pagrįsti tik išgautu tekstu ir nurodo pradinį puslapį. Reikalauja sąskaitos raktas, chat funkcija yra apskaitinė.
POST /api/v1/chat/<uuid>/, JSON įstaiga {"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?"}'
Grąžina pagalbinį pranešimą su savo atsakymą ir nurodytų puslapių sąrašą:
{"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/, Gaukite pilną pokalbio stenogramą už darbą.
Kodų pavyzdžiai
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?"}'
Parametrai
| Laukas | Tipas | Aprašymas |
|---|---|---|
file | file | Reikalinga. Vaizdas arba PDF apdoroti. |
tier | string | cpu (numatyta, greitai/atspausdinta) arba vlm (pirminė AI – rašymas, išdėstymas, matematika). |
language | string | auto (numatyta) arba kalbos kodas (en, ch, ja, ar,...). |
tool | string | Neprivalomas įrankis įstumiamas į šliuzą (pvz., summarize-pdf, ask-pdf) šiai užduočiai iš anksto numatyti chat. |
Klaidos ir ribos
| Kodas | Reikšmė |
|---|---|
400 | Nėra failo, nepalaikomas tipas ar per didelis failas. |
401 | Trūksta arba netinkamas API žetonas. |
402 | Iš puslapių, dienos / mėnesio nemokamai riba pasiektas, arba nėra kreditų. Kūnas apima used/cap. |
404 | Nerastas darbas UUID. |
409 | Atsisiųsti užklaustą prieš užbaigiant darbą. |
Kiekvienas puslapis perdirbtas išlaidų kreditai (1/ puslapis greito pakopa, daugiau dėl priemokų). Mokami planai padidinti failo viršutinės ribos ir pridėti prioritetą. kainodara.
Dažnai užduodami klausimai
language=auto nustatyti arba perduoti konkretų kodą.