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
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.
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.
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.
# 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]) // 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(); # 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.
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.
Related tools
Image to Text — Free OCR (Optical Character Recognition)
Convert image to text online for free. OCR reads JPG, PNG, WebP and photos in 20+ languages and returns copy-ready text — no signup. API for developers too.
PDF OCR — Text Recognition for Scanned PDFs
Free online PDF OCR. Upload a scanned PDF and get its text — pages without a text layer are recognized automatically, in 20+ languages. No signup, API available.
PDF Parser
Parse PDF files to extract text, metadata, and structure. Free online tool and developer API. A modern alternative to pdf-parse and pdfplumber.
Image to Markdown Converter
Convert an image to Markdown online for free. OCR screenshots and photos of documents into structured Markdown text — or automate it via the API.