OCR.chat API

HTTP 요청 하나만으로 이미지나 PDF를 100개 이상의 언어로 간단한 텍스트, Markdown, 테이블, JSON으로 변환할 수 있습니다. 페이지당 측정되므로 놀라운 일은 없습니다.

개요

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)

인증

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.

문서 제출하기

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

결과 얻기

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"

포맷 다운로드

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

문서와 채팅하기

완료된 작업에 대한 질문을 던집니다. 답변은 추출된 텍스트에만 기반을 두고 소스 페이지를 인용합니다. 계정 토큰이 필요합니다. 채팅 기능은 계정 게이트입니다.

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

답변과 인용된 페이지 목록이 있는 보조 메시지를 반환합니다.

{"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/, 작업에 대한 전체 대화 기록을 가져옵니다.

코드 예제

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

파라미터

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.

오류 및 한계

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.

자주 묻는 질문

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.

사용은 계정 잔액에 대한 페이지 당 측정됩니다: 익명 호출 IP 당 일일 할당량을 얻을, 무료 계정 월간 버킷, 유료 계획은 파일 당 페이지 캡과 우선 순위가 높은 구입 크레딧을 사용합니다. 당신이 실행 될 때 당신은 본문에 사용 및 캡과 함께 402를 얻을.

PNG, JPG, WEBP, GIF, BMP, TIFF, 다중 페이지 PDF를 보낼 수 있습니다. 결과는 다운로드 엔드포인트의 형식 매개 변수를 통해 txt, md, docx, pdf (검색 가능), csv 또는 json으로 다운로드됩니다.

400은 누락된 파일, 지원되지 않는 형식, 또는 파일이 너무 크다는 것을 의미하며, 401은 누락되거나 잘못된 토큰, 402는 페이지가 없는 것을 의미하며, 404는 알 수 없는 작업 UUID, 409는 작업이 완료되기 전에 다운로드 요청을 의미한다.

status, tier, language, page_count, mean_confidence, full text 및 markdown이 있는 작업 객체입니다. pages 배열은 각 페이지를 텍스트, 경계 상자(bbox) 및 블록당 신뢰도가 있는 블록으로 나눕니다.

깨끗한 인쇄 문서의 빠르고 저렴한 인식을 위해 cpu(기본값)를 사용합니다. 필기, 복잡하거나 다중 열 레이아웃, 수학 및 번역을 위해 프리미엄 AI 엔진인 vlm을 사용하여 훨씬 더 정확하게 인식합니다.

슬래그(예: extract-tables 또는 handwriting-to-text)를 도구에 전달하면 도구의 튜닝된 사전설정을 적용합니다. 번역 도구의 경우, 인식된 텍스트를 번역하기 위해 대상 언어 코드와 함께 translate_to 를 전달합니다.

5페이지 이하의 파일은 POST 응답에서 인라인으로 반환됩니다. 더 큰 파일은 즉시 대기 중이거나 처리 중으로 돌아오며, GET /api/v1/ocr/ 폴링을 수행합니다.<uuid>/ 상태가 완료되거나 실패할 때까지. 유료 계획은 파일 당 페이지 캡을 올립니다.

API는 HTTPS를 통한 간단한 REST이므로 HTTP 클라이언트를 사용하는 모든 언어에서 작동합니다. 위의 Python, Node.js, cURL 예를 참조하세요. 설치할 SDK가 없으며 몇 줄의 표준 HTTP 코드만 필요합니다.