Scanned PDF OCR
Turns scanned PDFs and images into searchable PDFs that look the same, plus the text of every page, in 16 languages.
Apify Store · coming soon
What it does
The Actor turns scanned PDFs and images (JPEG, PNG, TIFF) into searchable PDFs. It runs OCRmyPDF with the Tesseract OCR engine, which adds an invisible text layer to each scanned page and keeps the page looking the same. It also returns each page's text. Files are processed inside the run; no third-party OCR or AI service is used.
Input
- Files: URLs of PDFs or images, up to 200 MB each.
- Languages: English (default), German, French, Spanish, Italian, Portuguese, Dutch, Polish, Czech, Swedish, Danish, Norwegian, Finnish, Turkish, Romanian and Hungarian. Choose only the languages in the documents; each extra one slows OCR down.
- Pages that already have text: "Skip" (default) keeps pages that already have real text; "Redo" replaces old OCR text and keeps real text; "Force" OCRs every page again, turning text pages into images.
- Fix page rotation: turns sideways or upside-down pages upright (not available with Redo).
- PDF/A for archiving: saves PDF/A-2b instead of a regular PDF.
- File size: keep images as they are, optimise losslessly (default), or compress images more.
- Text per page in the dataset: on by default.
- Maximum pages per file: longer PDFs are refused and not charged (default 500, at most 2,000).
Output
One dataset item per file with: status (ok, failed or skipped), file type, pages, OCR pages, pages kept with their own text, languages, the searchable PDF (key, URL and size in the run's key-value store), the text per page when asked for, and an error message for failed files. The OUTPUT record in the key-value store has the run's totals. The PDF's URL needs your Apify token, like any record in your storage.
Pricing
Pay per event: one "OCR page" event per page that went through OCR, one "text page" event per page kept with its own text layer (cheaper), and Apify's small start event per run. Failed files are not charged. Prices are on the Actor's Pricing tab.
Maximum cost per run
When the maximum cost per run set in Apify is reached, the Actor finishes the current file and lists the remaining files as skipped.
Troubleshooting
- "the PDF already has text": the mode was not Skip and a page already had text; use "Redo OCR" or "Force OCR".
- "the PDF is encrypted": password-protected PDFs can't be processed.
- "the PDF is digitally signed": adding a text layer would break the signature, so signed PDFs are refused.
- "not a PDF, JPEG, PNG or TIFF file": the URL returned something else, such as a web page; use a direct file link.
- Weak text: scans below 200 DPI, photos at an angle and handwriting give weaker OCR. Scan at 300 DPI where possible.