ParseJet

OCR API — Extract Text from Images in One Request

Add optical character recognition to your app with one HTTP call. Send a JPG, PNG, WebP, or scanned PDF to the ParseJet OCR API and get clean text plus metadata back as JSON — no Tesseract to compile, no model files to manage, no GPU. Free to start with 300 requests a month; try it on an image right here.

Drop a file here or browse

Accepts JPG,JPEG,PNG,GIF,WEBP,TIFF,BMP,PDF files

Free — 3 requests/day, no signup. for 300 credits/month free.

How it works

1

Get a free API key

Sign up, create a key in the dashboard, and you have 300 requests a month. No key at all gets you 3 requests a day for a quick test.

2

POST the image

One multipart request to /v1/parse/image/ocr — or /v1/parse/auto/file if you also send PDFs and other documents through the same code path.

3

Use the JSON

The response has the text, a title, the source type, and metadata such as image size, line count, and an average confidence score.

Key features

What makes this ocr api stand out.

One endpoint, any language

Plain HTTP with multipart upload: Python, JavaScript, Go, PHP, Ruby, Swift, curl in a cron job — anything that can POST a file.

Official SDKs

pip install parsejet or npm install parsejet and call client.parse.ocr() — retries, errors, and typing handled for you.

20+ languages

Latin scripts, Chinese, and Japanese are read automatically; pass language=ko, ru, ar, hi, th, or el for Korean, Cyrillic, Arabic, Devanagari, Thai, or Greek.

Scanned PDFs too

Send a PDF to /v1/parse/auto/file and image-only pages are OCR’d automatically (up to 30 per request), with the recognized page numbers in the metadata.

Predictable JSON

Every response has the same shape: text, title, source_type, metadata. Confidence is in metadata.ocr_confidence so you can route low-confidence results to a human.

Self-hosted models, no third-party AI

Recognition runs on ParseJet infrastructure with open-source PP-OCR models. Images are processed in memory and not retained — simpler compliance than sending customer documents to a big-cloud vision API.

Use cases

Common scenarios where this tool saves you time.

Receipt and invoice capture

Read totals, dates, and vendor names from photos uploaded by users, then validate them in your own code.

Screenshot moderation and search

Extract the text from user-submitted images so it can be searched, filtered, or checked against rules.

Document ingestion for RAG

OCR scanned pages and images alongside PDFs and DOCX through one API before chunking and embedding.

Mobile app backends

Keep the app small: send the photo to the API instead of shipping an on-device OCR model.

Replacing Tesseract in serverless

No native binaries or language packs to bundle into Lambda, Vercel, or Cloudflare functions — just an HTTP call.

Automate with the API

Use the same tool programmatically. Works with any language — just HTTP.

Python
# pip install httpx
import httpx

resp = httpx.post(
    "https://api.parsejet.com/v1/parse/image/ocr",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    files={"file": open("receipt.jpg", "rb")},
    data={"language": "en"},     # optional hint: ko, ru, ar, hi, th, el ...
    timeout=60,
)
resp.raise_for_status()
result = resp.json()
print(result["text"])
if result["metadata"]["ocr_confidence"] < 0.8:
    print("low confidence — send for manual review")

# Batch a folder of scans
from pathlib import Path
for img in Path("scans").glob("*.png"):
    r = httpx.post(
        "https://api.parsejet.com/v1/parse/image/ocr",
        headers={"Authorization": "Bearer YOUR_API_KEY"},
        files={"file": (img.name, img.read_bytes(), "image/png")},
    )
    print(img.name, r.json()["text"][:80])
JavaScript / Node
// npm install parsejet
import { ParseJet } from "parsejet";
import { readFile } from "node:fs/promises";

const client = new ParseJet({ apiKey: process.env.PARSEJET_API_KEY });
const image = await readFile("receipt.jpg");
const result = await client.parse.ocr(image, "receipt.jpg");
console.log(result.text);

// Or plain fetch, in any runtime:
const form = new FormData();
form.append("file", new Blob([image]), "receipt.jpg");
const res = await fetch("https://api.parsejet.com/v1/parse/image/ocr", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.PARSEJET_API_KEY}` },
  body: form,
});
const { text, metadata } = await res.json();
cURL
# No API key: 3 requests/day for testing
curl -X POST https://api.parsejet.com/v1/parse/image/ocr \
  -F "[email protected]"

# With a key (300 free requests/month), Korean text
curl -X POST https://api.parsejet.com/v1/parse/image/ocr \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "[email protected]" -F "language=ko"

# Response
# {
#   "text": "...",
#   "title": "menu",
#   "source_type": "image_ocr",
#   "metadata": { "width": 1280, "height": 960, "ocr_lines": 14, "ocr_confidence": 0.96 }
# }

Want to automate this?

ParseJet API gives you the same parsing power via a single HTTP endpoint. No ffmpeg, no poppler, no tesseract — just one API call.

curl -X POST https://api.parsejet.com/v1/parse/auto/url \ -H "Content-Type: application/json" \ -d '{"url":"https://example.com"}'
Read API Docs

Frequently asked questions

Is there a free OCR API?

Yes. Without any key you can make 3 requests a day, which is enough to test. A free account gives you an API key with 300 credits a month (one image = one credit). Paid plans start at $19/month for higher limits and larger files.

How do I use the OCR API in Python?

POST the image as multipart form data to /v1/parse/image/ocr with your key in the Authorization header — three lines with httpx or requests, shown above. The text is in the "text" field of the JSON response. The parsejet package on PyPI wraps the same call with retries and typed results.

How accurate is it?

The API uses PP-OCR recognition models, the same family that powers many production OCR systems. Printed text, screenshots, and clean scans come back with very high accuracy; every response carries an average confidence score you can threshold. Handwriting and blurry photos score lower.

What languages are supported?

English and all Latin-script languages, Simplified and Traditional Chinese, and Japanese need no parameter. Send language=ko, ru (or uk, bg…), ar (or fa, ur), hi, th, or el for Korean, Cyrillic, Arabic, Devanagari, Thai, or Greek.

What are the limits?

Images up to 20 MB, PDFs up to 200 MB on paid plans (2 MB without a key, 5 MB on the free account). Requests per minute depend on the plan. A scanned PDF recognizes up to 30 image pages per request.

Do you store my images?

No. Files are processed in memory on ParseJet servers with open-source models and discarded when the response is sent. They are not forwarded to any third-party AI provider and not used for training.

How is this different from Tesseract?

Tesseract is free to run yourself but you own the binaries, language packs, image preprocessing, and accuracy tuning — and it struggles with photos and CJK text. The ParseJet API gives you modern deep-learning OCR behind one HTTP call, with the same JSON shape as every other ParseJet parser.

Start extracting text for free

No signup required. Parse your first file in seconds.

View Pricing