API PDF.chat
یک پیدیاف را بارگذاری کنید و chat را با آن از برنامه خودتان بارگذاری کنید. سوال بپرسید و پاسخهایی که به صفحه اشاره شده را بگیرید، در بیش از ۱۰۰ زبان. بر اساس هر صفحه اندازهگیری میشود، هیچ شگفتی وجود ندارد.
نمای کلی
API PDF.chat یک رابط REST کوچک است. اول شما POST یک سند را برای جذب آن و بازگرداندن یک کار با متن سند و یک تجزیه به صورت صفحهای (متن، جعبه مرزی، اعتماد) انتخاب کنید. سپس POST پرسشها را در مقابل آن کار قرار دهید و پاسخهایی را که در سند قرار دارند دریافت کنید، هر کدام با نقل قول صفحهای که از آن آمده است. کارهای ۵ صفحه یا کمتر در خط بازگردانده میشوند؛ کارهای بزرگتر بلافاصله با یک pending وضعیتی که تا آن زمان پرسش میکنید done.
- نشانی وب پایه:
https://pdf.chat - سند در: پیدیاف، به علاوه وورد، پاورپوینت، متن و تصاویر (PNG، JPG، WEBP، GIF، BMP، TIFF)
- Chat خارج: پاسخها با نقل قول صفحات؛ رونوشتها از طریق نقطه پایانی تاریخچه
- متن پردازششده بیرون:
txt,md,docx,pdf,csv,json - موتورهای خواندن:
cpu(سندهاي چاپ شده سريع) وvlm( هوش مصنوعی بالا ، دست نوشته ، طرح پیچیده ، ریاضی )
احراز هویت
با حساب کاربری خود وارد شوید نشان API (در روي ميزتون پيداش کنيد) صفحه حساب) به عنوان سرآیندِ حامل:
Authorization: Bearer YOUR_API_TOKEN
شما هم مي تونيد بگيد ?api_token=… به عنوان پارامتر پرسش. استفاده بر اساس تعادل صفحه حساب شما اندازهگیری میشود.
ارسال سند
POST /api/v1/ocr/, . بارگيري فرم چند قسمتي
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"
کار را برمیگرداند. برای پروندههای ≤ ۵ صفحه از قبل done با متن؛ پروندههای بزرگتر برمیگردند pending/processing, پرسش از نقطه پایانی وضعیت
{
"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 } ] } ]
}
نتیجه را دریافت کنید
GET /api/v1/ocr/<uuid>/, پرسش تا status است done یا failed.
curl https://pdf.chat/api/v1/ocr/9f2c1b7e4a.../ \
-H "Authorization: Bearer YOUR_API_TOKEN"
بارگیری یک قالب
GET /api/v1/ocr/<uuid>/download/?format=md, صادرات نتیجه format یکی از 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 با يه سند
پرسش در مورد یک کار تمامشده. پاسخها فقط در متن استخراج شده و با نقل قول صفحه منبع پایهگذاری میشوند. نیازمند یک نشان حساب، ویژگی گپ حساب-گذر است.
POST /api/v1/chat/<uuid>/, بدنۀ 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?"}'
پیام دستیار را با پاسخ و فهرست صفحات نقل شده برمیگرداند:
{"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/, fetch the full conversation transcript for a job.
نمونههای کد
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?"}'
پارامترها
| میدان | نوع | توصیف |
|---|---|---|
file | file | لازمه. تصویر یا PDF برای پردازش. |
tier | string | cpu (قبلفرض، سریع/چاپشده) یا vlm (AI premium: دست نوشته، طرح، ریاضی) |
language | string | auto ) پیشفرض (یا کد زبان (en, ch, ja, ar. |
tool | string | ابزارهای انتخابی (e.g. summarize-pdf, ask-pdfبرای این کار باید از تابع chat استفاده کرد. |
خطاها و محدودیتها
| کد | معنی |
|---|---|
400 | پروندهای وجود ندارد ، نوع پشتیبانی نشده ، یا پروندۀ بسیار بزرگ. |
401 | نشانگر API گمشده یا نامعتبر. |
402 | از صفحات خارج شد ، محدودیت آزاد روزانه/ماهانه رسید ، یا هیچ اعتباری وجود ندارد. بدنه شامل used/cap. |
404 | UUID کار پیدا نشد. |
409 | بارگیری قبل از پایان کار درخواست شد. |
هر صفحه پردازش شده هزینههای اعتباری دارد (۱/ صفحه در سطح سریع ، بیشتر در Premium). برنامههای پرداختی حد صفحات پروندهای را افزایش میدهند و اولویت را اضافه میکنند. ببینید قیمت.
پرسشهای متداول
language=auto براي شناسايي يا انتقال يک کد خاص