PDF.chat ألف

تحميل PDF و chat معه من تطبيقك الخاص - طرح الأسئلة والحصول على إجابات مستشهدة إلى الصفحة، في 100 + لغات. مقاسة لكل صفحة، لا مفاجآت.

ألف - استعراض عام

PDF.chat API هو واجهة REST صغيرة. POST وثيقة لتناولها والحصول على وظيفة مع نص الوثيقة وتفصيل لكل صفحة (النص، مربعات الحدود، الثقة). ثم أنت POST وتُعاد الوظائف التي تبلغ 5 صفحات أو أقل في السطر؛ وتعود الوظائف الأكبر حجما فورا مع قائمة بالوظائف التي تبلغ 5 صفحات أو أقل. pending الحالة التي تستطلع حتى done.

  • العنوان الأساسي: https://pdf.chat
  • الوثائق في: PDF، بالإضافة إلى Word وPowerPoint والنصوص والصور (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"

يعيد العمل. بالنسبة للملفات التي تبلغ ≤ 5 صفحات، فإنه متوفر بالفعل 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 مع وثيقة

يسأل أسئلة حول عمل تم إنجازه. الإجابات تستند فقط في النص المستخرج وتستشهد بصفحة المصدر. يتطلب رمز حساب، الخاصية 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/, أحصل على نسخة كاملة من المحادثة لعمل

أمثلة على المدونات

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

البارامترات

الميدانالنوعوصف المشروع
filefileمطلوب. الصورة أو PDF لمعالجة.
tierstringcpu (الافتراضية، السريعة/المطبوعة) أو vlm (ذكاء اصطناعي عالي المستوى: الكتابة، التخطيط، الرياضيات)
languagestringauto (الافتراضية) أو رمز لغة (الافتراضية)en, ch, ja, ar)...(.
toolstring)ب( معدات ﻻستخراج اﻷشعة السينية summarize-pdf, ask-pdf) لوضع chat في إطار مسبق لهذه المهمة.

الأخطاء والحدود

الرمزالمعنى
400لا يوجد ملف، أو نوع غير مدعم، أو الملف كبير جداً.
401رمز API مفقود أو غير صحيح.
402استنفد عدد الصفحات، أو تم الوصول إلى الحد اليومي/الشهري للمواد المجانية، أو لم يكن هناك أرصدة دائنة. used/cap.
404لم يتم العثور على UUID للعمل.
409طلب التنزيل قبل انتهاء المهمة.

كل صفحة مجهزة تكاليف الائتمانات (1/صفحة على المستوى السريع، أكثر على الاضافية). الخطط المدفوعة تزيد الحد الأقصى لكل صفحة ملف وإضافة الأولوية. انظر التسعير.

الأسئلة المتكررة

إنشاء حساب مجاني وفتح حسابك صفحة الحساب, رمزك يظهر هناك مع زر النسخ

نعم، الملفات التي تبلغ 5 صفحات أو أقل تعيد النتيجة الكاملة في رد POST، وبالتالي لا يلزم استطلاع معظم الصور وملفات PDF القصيرة.

أكثر من 100، بما في ذلك الكتابات اللاتينية، و CJK، والعربية، والسيريلية، والهندية. language=auto لاكتشاف أو إرسال رمز محدد

إن تحميل الملفات يتم معالجته فقط للإجابة على أسئلتك ويتم حذفها تلقائيا. نحن لا نبيع أو نتقاسم أو ندرب على وثائقك.

يتم قياس الاستخدام لكل صفحة مقابل رصيد حسابك: تحصل المكالمات المجهولة على مخصص يومي لكل بروتوكول الإنترنت، والحسابات المجانية على دلو شهري، والخطط المدفوعة تستخدم الائتمانات المشتراة مع حدود أعلى لكل صفحة ملف وأولوية. عندما تنفد، تحصل على 402 مع المستخدم والقاع في الجسم.

يمكنك إرسال PNG, JPG, WEBP, GIF, BMP, TIFF, و PDF متعدد الصفحات. تنزيل النتائج في txt, md, docx, pdf (قابل للبحث)، csv، أو json من خلال بارامترات الشكل نقطة نهاية التنزيل.

400 هو ملف مفقود، أو نوع غير مدعوم، أو ملف كبير جدًا؛ 401 هو رمز مفقود أو غير صحيح؛ 402 خارج الصفحات؛ 404 هو UUID غير معروف للعمل؛ و 409 هو تنزيل مطلوب قبل انتهاء العمل.

كائن عمل مع حالة، مستوى، اللغة، page_count، و mean_confidence، بالإضافة إلى النص الكامل و علامة التبويب. مصفوفة الصفحات تقسيم كل صفحة إلى كتل مع نصها، مربع الحدود (bbox)، و كل كتل الثقة.

إن التكنولوجيا الحديثة تعتمد على الذكاء الاصطناعي. فهي تستخدم وحدة المعالجة المركزية (الافتراضية) للتعرف السريع المنخفض التكلفة على الوثائق المطبوعة النظيفة. وتستخدم vlm، محرك الذكاء الاصطناعي الأعلى جودة، للكتابة بخط اليد، والتخطيط المعقد أو المتعدد الأعمدة، والرياضيات، والترجمة، حيث تكون أكثر دقة بكثير.

تمر أداة مع سلك (على سبيل المثال summarize-pdf أو ask-pdf) لوضع الإطار المسبق chat لتلك المهمة، وبالتالي المساعد هو مواءمة لتلخيص أو الإجابة على الأسئلة حول الوثيقة.

الملفات التي تبلغ 5 صفحات أو أقل تعود في الاستجابة POST. الملفات الأكبر تعود فوراً كأنها قيد الانتظار أو قيد المعالجة، وتقوم باستفتاء GET /api/v1/ocr/<uuid>/ حتى الحالة أنجزت أو فشلت. الخطط المدفوعة تزيد الحد الأقصى لكل صفحة ملف.

إن واجهة البرمجة التطبيقية هي REST بسيطة على HTTPS، وبالتالي فهي تعمل من أي لغة مع عميل HTTP، انظر الأمثلة على Python، و Node.js، و cURL أعلاه. ولا يوجد أي دعم لتطوير البرامج لتركيب؛ كل ما تحتاج إليه هو بضعة أسطر من رمز HTTP القياسي.