PDF.chat API

Muat naik PDF dan chat dengannya dari aplikasi anda sendiri — tanya soalan dan dapatkan jawapan yang dikutip ke halaman, dalam 100+ bahasa. Diukur per halaman, tiada kejutan.

Lihat

API PDF.chat adalah antaramuka REST kecil. Pertama anda POST dokumen untuk memakan ia dan mendapatkan semula kerja dengan teks dokumen dan pecahan per- halaman (teks, kotak sempadan, kepercayaan). Kemudian anda POST pertanyaan terhadap kerja itu dan dapatkan jawapan yang didasarkan dalam dokumen, masing- masing mengutip halaman yang ia datang dari. Kerja 5 halaman atau kurang kembali dalam baris; kerja yang lebih besar kembali segera dengan pending status yang anda poll sehingga done.

  • URL asas: https://pdf.chat
  • Dokumen dalam: PDF, plus Word, PowerPoint, teks, dan imej (PNG, JPG, WEBP, GIF, BMP, TIFF)
  • Chat keluar: jawapan dengan kutipan halaman; transkripsi melalui titik akhir sejarah
  • Teks diproses keluar: txt, md, docx, pdf, csv, json
  • Enjin bacaan: cpu (cepat, dokumen cetak) dan vlm (AI premium, tulisan tangan, susun atur kompleks, matematik)

Pengesahan

Pengesahan dengan anda Token API (temui ia di halaman akaun) sebagai pengepala Bearer:

Authorization: Bearer YOUR_API_TOKEN

Anda juga boleh lulus ?api_token=… sebagai parameter pertanyaan. Penggunaan diukur terhadap baki halaman akaun anda.

Hantar dokumen

POST /api/v1/ocr/, muat naik bentuk berbilang bahagian.

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"

Kembalikan kerja. Untuk fail ≤5- halaman ia sudah ada done dengan teks; fail yang lebih besar akan kembali pending/processing, poll status titik akhir.

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

Dapatkan hasil

GET /api/v1/ocr/<uuid>/, poll until status adalah done atau failed.

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

Muat turun format

GET /api/v1/ocr/<uuid>/download/?format=md, Eksport hasil. format adalah salah satu dari 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 dengan dokumen

Tanya soalan mengenai kerja yang selesai. Jawapan hanya didasarkan pada teks yang diekstrak dan mengutip halaman sumber. Memerlukan token akaun, ciri chat adalah akaun-gated.

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

Kembalikan mesej pembantu dengan jawapan dan senarai halaman yang dikutip:

{"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/, Dapatkan transkripsi perbualan penuh untuk kerja.

Contoh kod

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

Parameter

MedanJenisHuraian
filefileDiperlukan. Imej atau PDF untuk diproses.
tierstringcpu (piawai, pantas/cetak) atau vlm (AI premium: tulisan tangan, susun atur, matematik).
languagestringauto (piawai) atau kod bahasa (en, ch, ja, ar, …).
toolstringSlug alat opsyenal (cth. summarize-pdf, ask-pdf) untuk pra-frame chat untuk tugas itu.

Ralat & had

KodMakna
400Tiada fail, jenis tidak disokong, atau fail terlalu besar.
401Token API hilang atau tidak sah.
402Keluar halaman, had percuma harian/bulanan telah dicapai, atau tiada kredit. Badan termasuk used/cap.
404UUID kerja tidak dijumpai.
409Muat turun diminta sebelum kerja selesai.

Setiap halaman yang diproses kos kredit (1/halaman pada aras pantas, lebih pada premium). Rancangan berbayar menaikkan had halaman per fail dan menambah keutamaan. Lihat harga.

Pertanyaan yang kerap ditanya

Cipta akaun percuma dan buka akaun anda halaman akaun, token anda dipaparkan di sana dengan butang salin.

Ya, fail 5 halaman atau kurang mengembalikan hasil penuh dalam baris dalam maklum balas POST, jadi tiada pemilihan diperlukan untuk kebanyakan imej dan PDF pendek.

Lebih 100, termasuklah Latin, CJK, Arab, Cyrillic dan skrip India. Guna language=auto untuk mengesan, atau menghantar kod tertentu.

Muat naik hanya diproses untuk menjawab soalan anda dan dipadam secara automatik. Kami tidak pernah menjual, berkongsi, atau melatih dokumen anda.

Penggunaan diukur per halaman terhadap baki akaun anda: panggilan anonim mendapat peruntukan harian per IP, akaun percuma satu tong bulanan, dan rancangan berbayar menggunakan kredit yang dibeli dengan had halaman per fail dan keutamaan yang lebih tinggi. Apabila anda kehabisan anda akan mendapat 402 dengan digunakan dan had dalam badan.

Anda boleh menghantar PNG, JPG, WEBP, GIF, BMP, TIFF, dan PDF berbilang halaman. Hasil muat turun sebagai txt, md, docx, pdf (boleh dicari), csv, atau json melalui parameter format titik akhir muat turun.

400 ialah fail hilang, jenis tidak disokong, atau fail terlalu besar; 401 ialah token hilang atau tidak sah; 402 adalah keluar dari halaman; 404 ialah UUID kerja tidak diketahui; dan 409 ialah muat turun diminta sebelum kerja selesai. Badan ralat termasuk mesej pendek.

Objek kerja dengan status, aras, bahasa, page_count, dan mean_confidence, ditambah teks penuh dan markdown. Aras halaman memecah setiap halaman ke blok dengan teks mereka, kotak sempadan (bbox), dan kepercayaan per-blok.

Guna cpu (piawai) untuk pengecaman pantas, kos rendah dokumen cetak bersih. Guna vlm, enjin AI premium, untuk tulisan tangan, susunatur kompleks atau berbilang-kolum, matematik, dan terjemahan, di mana ia lebih tepat.

Lalukan alat dengan slug (contohnya ringkasan-pdf atau tanya-pdf) untuk pra-bingkai chat untuk tugas itu, jadi pembantu diset untuk ringkasan atau jawab soalan mengenai dokumen.

Fail 5 halaman atau kurang kembali dalam baris dalam maklum balas POST. Fail yang lebih besar kembali segera sebagai menunggu atau pemprosesan, dan anda poll GET /api/v1/ocr/<uuid>/ sehingga status selesai atau gagal. Rancangan berbayar menaikkan had halaman per fail.

API adalah REST biasa di atas HTTPS, jadi ia berfungsi dari mana-mana bahasa dengan klien HTTP, lihat contoh Python, Node.js, dan cURL di atas. Tiada SDK untuk dipasang; beberapa baris kod HTTP piawai adalah semua yang anda perlukan.