OCR.chat API

Vienas HTTP prašymas paverčia atvaizdą arba PDF į švarų tekstą, Markdown, lenteles ir JSON — 100+ kalbomis. Matuota per puslapį, jokių staigmenų.

Apžvalga

The OCR.chat API is a small REST interface. You POST a file and get back a job with the recognized text and a per-page breakdown (text, bounding boxes, confidence). Jobs of 5 pages or fewer return inline; larger jobs return immediately with a pending status that you poll until done.

  • Base URL: https://ocr.chat
  • Formats in: PNG, JPG, WEBP, GIF, BMP, TIFF, and multi-page PDF
  • Formats out: txt, md, docx, pdf, csv, json
  • Engines: cpu (fast, printed docs) and vlm (premium AI, handwriting, complex layout, math)

Autentikacija

Authenticate with your API token (find it on your account page) as a Bearer header:

Authorization: Bearer YOUR_API_TOKEN

You can also pass ?api_token=… as a query parameter. Usage is metered against your account's page balance.

Pateikti dokumentą

POST /api/v1/ocr/, multipart form upload.

curl -X POST https://ocr.chat/api/v1/ocr/ \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -F "file=@invoice.pdf" \
  -F "tier=vlm" \
  -F "language=auto"

Returns the job. For ≤5-page files it is already done with the text; larger files come back pending/processing, poll the status endpoint.

{
  "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 } ] } ]
}

Gaukite rezultatą

GET /api/v1/ocr/<uuid>/, poll until status is done or failed.

curl https://ocr.chat/api/v1/ocr/9f2c1b7e4a.../ \
  -H "Authorization: Bearer YOUR_API_TOKEN"

Atsiųsti formatą

GET /api/v1/ocr/<uuid>/download/?format=md, export the result. format is one of txt, md, docx, pdf, csv, json.

curl -L "https://ocr.chat/api/v1/ocr/9f2c1b7e4a.../download/?format=docx" \
  -H "Authorization: Bearer YOUR_API_TOKEN" -o result.docx

Pokalbis su dokumentu

Užduoti klausimus apie baigtą darbą. Atsakymai pagrįsti tik išgautu tekstu ir nurodo pradinį puslapį. Reikalauja paskyros raktas — pokalbių funkcija yra apskaitinė.

POST /api/v1/chat/<uuid>/, JSON body {"message": "your question"}.

curl -X POST https://ocr.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?"}'

Grąžina pagalbinį pranešimą su savo atsakymą ir nurodytų puslapių sąrašą:

{"conversation": "a1b2…", "message": {
   "role": "assistant",
   "content": "The total is $42, due on March 3 (p. 1).",
   "citations": [{"page": 1, "snippet": "The invoice total is $42…"}]
}}

GET /api/v1/chat/<uuid>/history/, Gaukite pilną pokalbio stenogramą už darbą.

Kodų pavyzdžiai

import requests, time

API = "https://ocr.chat/api/v1/ocr/"
H = {"Authorization": "Bearer YOUR_API_TOKEN"}

# Submit
with open("invoice.pdf", "rb") as f:
    job = requests.post(API, headers=H,
        files={"file": f}, data={"tier": "vlm"}).json()

# Poll until done
while job["status"] in ("pending", "processing"):
    time.sleep(2)
    job = requests.get(API + job["uuid"] + "/", headers=H).json()

print(job["markdown"])

# Download as DOCX
r = requests.get(API + job["uuid"] + "/download/",
                 headers=H, params={"format": "docx"})
open("result.docx", "wb").write(r.content)
import fs from "fs";

const API = "https://ocr.chat/api/v1/ocr/";
const H = { Authorization: "Bearer YOUR_API_TOKEN" };

const form = new FormData();
form.append("file", new Blob([fs.readFileSync("invoice.pdf")]), "invoice.pdf");
form.append("tier", "vlm");

let job = await (await fetch(API, { method: "POST", headers: H, body: form })).json();

while (["pending", "processing"].includes(job.status)) {
  await new Promise(r => setTimeout(r, 2000));
  job = await (await fetch(API + job.uuid + "/", { headers: H })).json();
}
console.log(job.markdown);
# 1. Submit
curl -X POST https://ocr.chat/api/v1/ocr/ \
  -H "Authorization: Bearer YOUR_API_TOKEN" \
  -F "file=@invoice.pdf" -F "tier=vlm"

# 2. Poll  (use the uuid from step 1)
curl https://ocr.chat/api/v1/ocr/UUID/ \
  -H "Authorization: Bearer YOUR_API_TOKEN"

# 3. Download
curl -L "https://ocr.chat/api/v1/ocr/UUID/download/?format=md" \
  -H "Authorization: Bearer YOUR_API_TOKEN" -o result.md

Parametrai

FieldTypeDescription
filefileRequired. The image or PDF to process.
tierstringcpu (default, fast/printed) or vlm (premium AI: handwriting, layout, math).
languagestringauto (default) or a language code (en, ch, ja, ar, …).
toolstringOptional tool slug (e.g. extract-tables, handwriting-to-text) to apply that tool's preset.
translate_tostringFor the translate tool, target language code.

Klaidos ir ribos

CodeMeaning
400No file, unsupported type, or file too large.
401Missing or invalid API token.
402Out of pages, daily/monthly free limit reached, or no credits. The body includes used/cap.
404Job UUID not found.
409Download requested before the job finished.

Each page processed costs credits (1/page on the fast tier, more on premium). Paid plans raise per-file page caps and add priority. See pricing.

Dažnai užduodami klausimai

Create a free account and open your account page, your token is shown there with a copy button.

Yes, files of 5 pages or fewer return the full result inline in the POST response, so no polling is needed for most images and short PDFs.

Over 100, including Latin, CJK, Arabic, Cyrillic and Indic scripts. Use language=auto to detect, or pass a specific code.

Uploads are processed for OCR and deleted automatically. We never sell, share, or train on your documents.

Naudojimas matuojamas pagal jūsų sąskaitos likutį: anoniminiai skambučiai gauna per IP dienpinigius, nemokamą sąskaitą mėnesio kibirkštyje, ir apmokėti planai naudoti įsigytus kreditus su aukštesniais vienam lapo viršūnės ir prioritetas. Kai baigsite, gausite 402 su naudojamais ir cap organizme.

Galite siųsti PNG, JPG, WEBP, GIF, BMP, TIFF, ir kelių puslapių PDF. Rezultatai atsisiųsti kaip txt, md, DOCX, pdf (paieškamas), Csv, arba Json per atsisiuntimo baigties formato parametrą.

400 yra trūkstamas failas, nepalaikomas tipas, arba failas per didelis; 401 trūkstamas arba negaliojantis žetonas; 402 iš puslapių; 404 nežinomas darbas UUID; ir 409 parsisiųsti prašoma prieš užbaigiant darbą. Klaida įstaigos apima trumpą pranešimą.

Darbo objektas su būsena, pakopa, kalba, puslapis_skaičius, ir vidutinis_ pasitikėjimas, plius visas tekstas ir žymėjimas. Puslapiai masyvo pertraukia kiekvieną puslapį į blokus su savo tekstą, ribojantis laukelis (Bbox), ir kiekvienam blokui pasitikėjimą.

Naudokite cpu (numatytasis) greitai, pigių pripažinimo švarus spausdinti dokumentus. Naudokite Vlm, priemoka AI variklis, rankinio, sudėtingų ar kelių kolonėlių išdėstymo, matematikos, ir vertimo, kur jis yra daug tiksliau.

Perduoti įrankis su šliaužtu (pavyzdžiui ištraukimo stalai arba rašto į tekstą) taikyti, kad šio įrankio derinį. Vertimo įrankis, taip pat perduoti Translate_to su tikslinės kalbos kodą gauti pripažintą tekstą atgal išversti.

Failai 5 puslapių arba mažiau grįžti į internetą į Point atsakymą. Didesni failai grįžti iš karto kaip laukia arba perdirbimo, ir jūs apklauskite GET /api/v1/ocr /<uuid>/ kol bus atlikta arba bus padarytas arba nepavyko. Mokami planai pakelti failo puslapio viršutinę ribą.

API yra paprastas REST over HTTPS, todėl ji veikia iš bet kurios kalbos su HTTP klientas — žr Python, Node.js, ir cURL pavyzdžiai pirmiau. Nėra SDK įdiegti; keletas eilučių standartinis HTTP kodas yra viskas, ko jums reikia.