OCR: Image & Scanned PDF to Text (Spanish, English, Portuguese)
Pricing
from $4.00 / 1,000 image or page processeds
OCR: Image & Scanned PDF to Text (Spanish, English, Portuguese)
OCR images and scanned PDFs in Spanish, English or Portuguese and get the text plus a searchable PDF. $4 per 1,000 pages, failed files are free.
Pricing
from $4.00 / 1,000 image or page processeds
Rating
0.0
(0)
Developer
Matias Isnard
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Security
Limited permissionsShare
OCR images and scanned PDFs in Spanish, English or Portuguese and get the text, a confidence score per line and page, and optionally a searchable PDF. Tesseract runs inside the Actor, so your files are not sent to any third-party OCR service. $4 per 1,000 pages, files that fail to download or open are free.
Give it links to images (PNG, JPG, WebP, TIFF, BMP, GIF) or scanned PDFs. For every image and every PDF page you get the recognized text, the text split into blocks and lines, a confidence score from 0 to 100 for each block, line and page, and optionally a searchable PDF.
OCR is done with Tesseract 5 inside the Actor. No file is sent to any third-party OCR service.
Who it is for
- Bookkeeping and expense tools: get the text of receipts and invoices before parsing totals and dates.
- Archives and research: turn scanned documents, old newspapers and book pages into searchable text.
- Data pipelines: extract text from screenshots or images collected by another Actor, then search or classify it.
- Anyone with scanned PDFs: get a searchable PDF back without installing anything.
Input
{"urls": ["https://raw.githubusercontent.com/tesseract-ocr/test/main/testing/phototest.tif","https://example.com/scans/contract.pdf"],"languages": ["spa", "eng"],"autoRotate": true,"upscaleSmallImages": true,"threshold": false,"searchablePdf": false,"maxPdfPages": 20,"maxFileSizeMb": 25,"timeoutSecs": 60}
urls(required): direct links to the files. Only http and https. The link must return the file itself, not a web page that shows it. Duplicates are processed once.languages(default Spanish + English):spa,eng,por. Pick only the languages that appear in your files. Each extra language makes OCR slower and gives Tesseract more ways to misread a word.autoRotate(default on): detects pages turned 90, 180 or 270 degrees and turns them upright. If the rotated page reads badly (mean confidence under 70), the page is also read unrotated and the better result is kept.upscaleSmallImages(default on): images whose longest side is under 2000 px are enlarged, up to 3x. Helps with screenshots and small scans.threshold(default off): converts the page to pure black and white (Otsu) before OCR. Try it on faded scans with gray backgrounds. It can make photos with uneven light worse.searchablePdf(default off): saves one PDF per input file to the run's key-value store, with the page image and an invisible text layer you can search and copy. The link is insearchable_pdf_url.maxPdfPages(default 20): only the first N pages of each PDF or multi-page TIFF are processed and charged. The number of skipped pages is inpages_skipped.maxFileSizeMb(default 25) andtimeoutSecs(default 60): limits for each download.
Every page is converted to grayscale before OCR. Very large images (longest side over 7000 px) are reduced. PDF pages are rendered at 300 DPI.
Output
One dataset item per image or PDF page. Shortened real example (more in ejemplos/salida.json in the source):
{"url": "https://upload.wikimedia.org/wikipedia/commons/1/10/Aviso_de_Ministerio_de_Marina_de_Diario_Oficial_de_Avisos_de_Madrid_31_Augusto_1912.jpg","page": 1,"page_count": 1,"pages_skipped": 0,"languages": "spa+eng","text": "de agua de la provincia\nde Salamanca.\n\nMinisterio de Marina.\nReales decretos concediendo\nla Gran Cruz de la Orden\ndel Mérito Naval, con dis-\n...","confidence": 91.6,"word_count": 99,"blocks": [{"text": "de agua de la provincia\nde Salamanca.","confidence": 96.5,"lines": [{ "text": "de agua de la provincia", "confidence": 96.5 },{ "text": "de Salamanca.", "confidence": 96.5 }]}],"preprocessing": { "grayscale": true, "scale": 2.642, "rotated_degrees": 0, "osd_confidence": 10.35, "threshold": false },"searchable_pdf_url": null,"error": null}
text: lines separated by a newline, blocks by an empty line, in Tesseract's reading order.confidence: mean of Tesseract's word confidences (0 to 100). Blocks and lines use the same formula with their own words.nullwhen no text was found.preprocessing.scale: resize factor applied before OCR.rotated_degrees: clockwise rotation applied.osd_confidence: how sure the orientation detection was (nullwhen it could not decide, for example on a page with almost no text).
A file that cannot be downloaded or opened gives one item with page: null and the reason in error. A page that fails during OCR gives an item with its page number and error. The run continues with the next page or file.
How good is it
Measured on a test run with 15 public images, 3 pages of a scanned PDF and 3 rotated copies of test images (Spanish, English and Portuguese, languages set to Spanish + English):
- Clean prints, typed letters and official documents (including Spanish and Portuguese ones from 1891 to 1954): mean confidence 90 to 96, a few wrong characters per paragraph.
- Screenshots of web pages: confidence 89 to 92. Menus and buttons come out as short lines mixed with the content.
- Photos of receipts: confidence 54 to 67. Shop names and prices are mostly right, column alignment is lost.
- A faded dot-matrix receipt (49) and a gothic type page (39): the text is not usable.
- An 18th century broadside: confidence 79, but the long s is read as f ("Courfe" for "Course").
- Rotated pages (90, 180, 270 degrees) were turned upright and read as well as the upright originals.
Confidence is a good filter: below 60 the text usually needs a human check.
Pricing
Pay per event: one image-processed event per image or PDF page that went through OCR, including pages where no text was found. Not charged: links that fail to download, files that are not images or PDFs, pages that fail during OCR, and PDF pages over maxPdfPages. You can cap the cost of a run with the "Maximum cost per run" setting. The Actor stops cleanly when the cap is reached.
Limitations
- Printed text only. Handwriting is not recognized.
- Tables come out as lines of text. Columns and cell structure are not kept.
- Pages are processed one at a time. A dense full page (newspaper, legal text) takes 30 to 80 seconds at the default 1 GB of memory. More memory gives the run more CPU, so pages finish faster.
- PDFs are always rendered and OCR'd, even if they already contain a text layer.
- Language models are Tesseract's fast models (tessdata_fast), the ones Debian ships. They are slightly less accurate than the "best" models and several times faster.
- The searchable PDF shows the page after pre-processing (grayscale, enlarged or rotated if that was done), not the original image.
- Password-protected PDFs and links that need a login are not supported.
Licenses
Tesseract and its language data: Apache-2.0. PDF rendering with pypdfium2 (Apache-2.0 or BSD-3-Clause) and PDFium (BSD-3-Clause), chosen over poppler-based tools, which are GPL. Image handling with Pillow (MIT-CMU).
Run locally
Needs Tesseract installed with the spa, eng, por and osd language data (apt install tesseract-ocr tesseract-ocr-spa tesseract-ocr-por on Debian or Ubuntu).
python -m venv .venv.venv/Scripts/pip install -r requirements.txt # on Linux/macOS: .venv/bin/pip# put input in storage/key_value_stores/default/INPUT.json.venv/Scripts/python -m my_actorpython -m unittest discover -s tests -t .
The unit tests do not need Tesseract: its output is mocked.
Author: Matias Isnard.
FAQ
What is charged?
Each image or PDF page that went through OCR, including pages with no text. Failed downloads, unsupported files and pages over maxPdfPages are not charged.
Does it read handwriting or keep tables? No. Printed text only, and tables come out as lines.
How fast is it? A dense full page takes 30 to 80 seconds at 1 GB. More memory makes it faster.
How do I spot bad results?
Use confidence. Below 60, the text usually needs a human check.
Related tools
- PDF to Text, Markdown & Tables (CSV): extract text and tables from PDFs that are not scanned, faster.
- Bulk Article Extractor: Clean Text & Markdown for LLMs: extract text from web pages.