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 statusdone 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ểmKiểuMô tả
filefileCần thiết. Bức ảnh hay PDF cần xử lý.
tierstringcpu (mặc định, nhanh/in) hoặc vlm (AI cao cấp: viết tay, bố cục, toán học).
languagestringauto (mặc định) hoặc mã ngôn ngữ (en, ch, ja, ar, …).
toolstringTù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

Nghĩa là...
400Không có tập tin, kiểu không được hỗ trợ, hoặc tập tin quá lớn.
401Thiếu hoặc không hợp lệ token API.
402Khô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.
404Không tìm thấy UUID công việc.
409Yê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

Tạo tài khoản miễn phí và mở Trang tài khoản, token của bạn được hiển thị ở đó với nút sao chép.

Có, các tập tin 5 trang hoặc ít hơn trả về kết quả đầy đủ trong câu trả lời POST, vì vậy không cần điều tra cho hầu hết các hình ảnh và PDF ngắn.

Hơn 100, bao gồm Latin, CJK, Arabic, Cyrillic và Indian scripts. Use language=auto để phát hiện, hoặc truyền một mã cụ thể.

Tải lên chỉ được xử lý để trả lời câu hỏi của bạn và tự động xóa. Chúng tôi không bao giờ bán, chia sẻ, hay huấn luyện tài liệu của bạn.

Sử dụng được đo theo trang đối với số dư tài khoản của bạn: cuộc gọi ẩn danh được cấp một số lượng ngày cho mỗi IP, tài khoản miễn phí được cấp một số lượng tháng, và các kế hoạch trả tiền sử dụng các tín dụng mua với giới hạn và ưu tiên trang cao hơn cho mỗi tập tin. Khi bạn hết tín dụng, bạn sẽ nhận được một 402 với dùng và giới hạn trong cơ thể.

Bạn có thể gửi PNG, JPG, WEBP, GIF, BMP, TIFF, và PDF nhiều trang. Kết quả tải về dạng txt, md, docx, pdf (có thể tìm kiếm), csv, hoặc json thông qua tham số định dạng của điểm kết thúc tải về.

400 là tập tin thiếu, kiểu không được hỗ trợ, hoặc tập tin quá lớn; 401 là ký hiệu thiếu hoặc không hợp lệ; 402 là không có trang; 404 là UUID công việc không biết; và 409 là yêu cầu tải xuống trước khi công việc kết thúc. Cơ thể lỗi bao gồm một thông điệp ngắn.

Một đối tượng công việc với trạng thái, cấp, ngôn ngữ, page_ count, và mean_ confidence, cộng thêm văn bản đầy đủ và đánh dấu. Mảng trang chia mỗi trang thành các khối với văn bản, hộp giới hạn (bbox), và độ tin cậy mỗi khối.

Dùng CPU (mặc định) để nhận dạng nhanh, giá rẻ tài liệu in sạch. Dùng vlm, bộ máy AI cao cấp, cho chữ viết tay, bố trí phức tạp hoặc nhiều cột, toán học và dịch, nơi nó chính xác hơn nhiều.

Pass tool với một slug (ví dụ summarize-pdf hoặc ask-pdf) để pre-frame chat cho nhiệm vụ đó, vì vậy trợ lý được điều chỉnh để tóm tắt hoặc trả lời các câu hỏi về tài liệu.

Tập tin có 5 trang hoặc ít hơn sẽ được trả về trong câu trả lời POST. Tập tin lớn hơn sẽ được trả lại ngay lập tức như đang chờ hoặc đang xử lý, và bạn sẽ hỏi GET /api/v1/ocr/<uuid>/ cho đến khi trạng thái hoàn thành hoặc thất bại. Các kế hoạch trả tiền sẽ tăng giới hạn trang cho mỗi tập tin.

API là REST đơn giản trên HTTPS, vì vậy nó hoạt động từ bất kỳ ngôn ngữ nào với một khách hàng HTTP, xem ví dụ Python, Node.js, và cURL ở trên. Không có SDK để cài đặt; một vài dòng mã HTTP tiêu chuẩn là tất cả những gì bạn cần.