API PDF.chat
Tải lên một PDF và chat với nó từ ứng dụng của riêng bạn — hỏi câu hỏi và nhận được câu trả lời trích dẫn đến trang, trong hơn 100 ngôn ngữ.
Kiểm tra
API PDF.chat là một giao diện REST nhỏ. POST một tài liệu để tiêu hóa nó và lấy lại một công việc với văn bản của tài liệu và một phân tích từng trang (thư, hộp giới hạn, sự tin tưởng). Sau đó bạn POST Để xem các câu hỏi đối với công việc đó và nhận được câu trả lời dựa trên tài liệu, mỗi câu hỏi phải trích dẫn trang nó đến từ. pending trạng thái mà bạn bình chọn cho đến done.
- URL cơ bản:
https://pdf.chat - Tài liệu trong: PDF, Word, PowerPoint, văn bản và hình ảnh (PNG, JPG, WEBP, GIF, BMP, TIFF)
- Chat ra: trả lời với các trang trích dẫn; bản dịch qua điểm kết thúc lịch sử
- Văn bản xử lý ra:
txt,md,docx,pdf,csv,json - Đọc động cơ:
cpu(nhanh, in tài liệu) vàvlm(AI cao cấp, viết tay, bố cục phức tạp, toán học)
Xác thực
Đăng nhập với tài khoản Mã API (trong tờ giấy của anh) Trang tài khoản) như đầu trang Bearer:
Authorization: Bearer YOUR_API_TOKEN
Bạn cũng có thể đi qua ?api_token=… như một tham số truy vấn. Sử dụng được đo bằng số trang trong tài khoản của bạn.
Đưa tài liệu
POST /api/v1/ocr/, Tải lên nhiều mẫu.
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"
Trả lại công việc. Đối với tập tin ≤5 trang thì nó đã được done với văn bản; tập tin lớn hơn sẽ trở lại pending/processing, hỏi điểm kết thúc trạng thái.
{
"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 } ] } ]
}
Lấy kết quả
GET /api/v1/ocr/<uuid>/, thăm dò cho đến status là done hoặc failed.
curl https://pdf.chat/api/v1/ocr/9f2c1b7e4a.../ \
-H "Authorization: Bearer YOUR_API_TOKEN"
Tải về định dạng
GET /api/v1/ocr/<uuid>/download/?format=md, xuất kết quả. format là một trong 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 với một tài liệu
Hỏi câu hỏi về công việc đã hoàn thành. Câu trả lời chỉ dựa vào văn bản đã trích xuất và trích dẫn trang nguồn. Cần một ký hiệu tài khoản, tính năng chat là tính năng có cổng tài khoản.
POST /api/v1/chat/<uuid>/, Thân 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?"}'
Trả lại thông điệp trợ lý với câu trả lời và danh sách các trang được trích dẫn:
{"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/, lấy toàn bộ bản ghi của cuộc nói chuyện cho một công việc.
Ví dụ mã
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?"}'
Tham số
| Địa điểm | Kiểu | Mô tả |
|---|---|---|
file | file | Cần thiết. Bức ảnh hay PDF cần xử lý. |
tier | string | cpu (mặc định, nhanh/in) hoặc vlm (AI cao cấp: viết tay, bố cục, toán học). |
language | string | auto (mặc định) hoặc mã ngôn ngữ (en, ch, ja, ar, …). |
tool | string | Tùy chọn tool slug (e.g. summarize-pdf, ask-pdf) để chuẩn bị chat cho nhiệm vụ đó. |
Lỗi và giới hạn
| Mã | Nghĩa là... |
|---|---|
400 | Không có tập tin, kiểu không được hỗ trợ, hoặc tập tin quá lớn. |
401 | Thiếu hoặc không hợp lệ token API. |
402 | Không còn trang, đã đạt giới hạn miễn phí hàng ngày/ hàng tháng, hoặc không có tín hiệu. used/cap. |
404 | Không tìm thấy UUID công việc. |
409 | Yêu cầu tải xuống trước khi công việc kết thúc. |
Mỗi trang xử lý có giá trị tín dụng (1/ trang trên cấp độ nhanh, nhiều hơn trên cấp độ cao). Các kế hoạch trả tiền tăng giới hạn trang trên tập tin và thêm ưu tiên. Xem giá.
Câu hỏi thường gặp
language=auto để phát hiện, hoặc truyền một mã cụ thể.