PDF.chat API

Загрузите PDF и chat с ним из своего приложения — задавайте вопросы и получаете ответы на странице на 100 языках.

Общий обзор

API PDF.chat — это маленький интерфейс REST. POST документ, чтобы проглотить его и вернуться к работе с текстом документа и поломкой на страницу (текст, связующие коробки, уверенность). POST :: вопросы против этой работы и ответы на них основаны на документе, каждый из которых приводит страницу, из которой он был получен. pending статус, который вы проводите до done.

  • Базовый URL: https://pdf.chat
  • Документы в: PDF, плюс Word, PowerPoint, текст и изображения (PNG, JPG, WEBP, GIF, BMP, TIFF)
  • Chat выход: ответы со ссылками на страницы; стенограммы через конец истории
  • Обработанный текст: txt, md, docx, pdf, csv, json
  • Двигатели для чтения: cpu (быстро, в печатном виде) и vlm (премиум АИ, почерк, компоновка, математика)

Аутентификация

Достоверно с вашей Символ API (Найди его на своей Стр.) в качестве заголовка Bearer:

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>/, Тело JOSON {"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Не найдена.
409Загрузка заказана до завершения работы.

Каждая страница обрабатывает суммы расходов (1/страница на быстром уровне, больше на страховом взносе). Выплаченные планы повышают верхние пределы каждой страницы и добавляют приоритет. ценообразование.

Часто задаваемые вопросы

Создать свободный счет и открыть свой Стр.Ваш символ показан там с кнопкой копирования.

Да, файлы объемом 5 страниц или меньше возвращают полный результат в ответ на POST, поэтому для большинства изображений и коротких PDF не требуется голосование.

Более 100, включая латинский, чешский, арабский, кириллический и индикальный шрифт. language=auto - чтобы обнаружить или продать конкретный код.

Загрузка обрабатывается только для того, чтобы ответить на ваши вопросы и удаляться автоматически.

Использование - это выписка на страницу из остатка на счету: анонимные звонки получают суточное пособие на каждого IP, бесплатные счета - ежемесячное ведро, а оплачиваемые планы используют приобретенные кредиты с более высокими по размеру и приоритетом на каждый файл. Когда вы заканчиваете, вы получаете 402 с использованным и потолком в теле.

Вы можете отправить PNG, JPG, WEBP, GIF, BMP, TIFF и многостраничную PDF. Результаты загрузить как txt, md, docx, pdf (исследуемое), csv или json через параметр конечных точек.

400 — это отсутствующий файл, неподтвержденный тип или слишком большой файл; 401 отсутствующий или недействительный символ; 402 из страниц; 404 неизвестная работа UUID; и 409 загрузка, запрошенная до завершения работы. Тела ошибки включают краткое сообщение.

Объект работы со статусом, уровнем, языком, страницам_конкурсом и со средним значением_надёжность плюс полный текст и отметка. Серия страниц разбивает каждую страницу на блоки с их текстом, связывая рамку (bbox) и по блоку.

Используйте струйный (по умолчанию) для быстрого, недорогостоящего распознавания чистых печатных документов. Используйте Vlm, премиальный двигатель АИ, для почерка, сложных или многоколумбовых схем, математики и перевода, где он гораздо более точен.

Пропускайте инструмент с слизью (например, резюме-pdf или запрос-pdf) для предварительной настройки chat для этой задачи, так что помощник будет настроен для резюме или ответа на вопросы о документе.

Файлы с 5 страницами или меньше возврата в ответ POST. Более крупные файлы возвращаются сразу же, как в ожидании или обработке, и вы опрашиваете GET/api/v1/ocr/<uuid>/ Пока статус не будет выполнен или не будет признан недействительным.

API - это просто REST по HTTPS, так что он работает с любым языком с клиентом HTTP, см. Python, Node.js и CURL примеры выше. ССK не установить, несколько строк стандартного кода HTTP - это все, что вам нужно.