Top 10 Open Source OCR Tools for PDFs and Documents (2026)
Document text extraction requires matching the software architecture to your primary document format. OCRmyPDF creates direct PDF/A output with searchable text layers for scanned PDFs, while offline C++ engines like Tesseract read raster image input to produce searchable PDFs. Among structured pipelines, PaddleOCR exports structured JSON and HTML with layout and table tooling, Docling produces Markdown, HTML, and JSON with reading order and TableFormer table extraction, Surya outputs reading-order and table JSON/HTML, and docTR generates hierarchical JSON and XML detections. For historical manuscripts, trainable HTR engines like Kraken and web annotation suites like eScriptorium supply custom transcription workflows.

Selection method
Candidates are evaluated by searchable text layer creation, structured layout and table parsing depth, handwriting and HTR support, local execution requirements, and licensing clarity.
The 10 open source OCR tools at a glance
| Candidate | Type | License | Status | Focus |
|---|---|---|---|---|
| #1 OCRmyPDF jbarlow83 / Community | PDF wrapper | MPL-2.0 | MPL-2.0 weak copyleft | CLI, Python library, and Docker image using Tesseract to add searchable text layers and PDF/A output to scanned PDFs |
| #2 PaddleOCR PaddlePaddle | Document-AI pipeline | Apache-2.0 | Apache-2.0 code & weights | Multilingual OCR, layout detection, and table parsing suite powered by PP-Structure |
| #3 Docling DS4SD / IBM Research | Document-AI pipeline | MIT code (model terms vary) | MIT code license (model terms vary) | Document conversion engine producing structured Markdown, JSON, HTML, and DocTags with reading order |
| #4 Tesseract Google / Community | OCR engine | Apache-2.0 | Apache-2.0 license | Offline CLI/C++ OCR engine rendering raw text, searchable PDFs, hOCR, ALTO, and TSV from raster images |
| #5 Umi-OCR hiroi-sora | Desktop application | MIT | Permissive MIT license | Offline Windows/Linux desktop GUI and HTTP API app for batch image, PDF, XPS, and EPUB text extraction |
| #6 Surya Vikram Paruchuri / Datalab | Document-AI pipeline | Apache-2.0 code / modified AI Pubs Open RAIL-M weights | Apache-2.0 code / modified AI Pubs Open RAIL-M weights | Document page-oriented layout analysis, reading order, and table parsing model tooling |
| #7 Kraken Mittagessen / Benjamin Kiessling | HTR engine | Apache-2.0 | Apache-2.0 license | Trainable OCR and handwritten text recognition (HTR) system for historical texts and non-Latin scripts |
| #8 eScriptorium Scripta Project | Annotation suite | MIT | Permissive MIT license | Web-based transcription platform for segmenting, annotating, and training historical HTR models |
| #9 docTR Mindee | Developer SDK | Apache-2.0 | Apache-2.0 code & weights | Python library, REST API templates, and Docker containers for deep learning document parsing |
| #10 Paperless-ngx Paperless-ngx Team | Document-management system | GPL-3.0 | GPL-3.0 copyleft license | Self-hosted document management web app wrapping OCRmyPDF and Tesseract for automated searchable archives |
Detailed candidate reviews
Detailed technical reviews ordered strictly from rank #1 to #10.
OCRmyPDF
Developed by jbarlow83 / CommunityCLI, Python library, and Docker image using Tesseract to add searchable text layers and PDF/A output to scanned PDFs
PaddleOCR
Developed by PaddlePaddleMultilingual OCR, layout detection, and table parsing suite powered by PP-Structure
Docling
Developed by DS4SD / IBM ResearchDocument conversion engine producing structured Markdown, JSON, HTML, and DocTags with reading order
Tesseract
Developed by Google / CommunityOffline CLI/C++ OCR engine rendering raw text, searchable PDFs, hOCR, ALTO, and TSV from raster images
Umi-OCR
Developed by hiroi-soraOffline Windows/Linux desktop GUI and HTTP API app for batch image, PDF, XPS, and EPUB text extraction
Surya
Developed by Vikram Paruchuri / DatalabDocument page-oriented layout analysis, reading order, and table parsing model tooling
Kraken
Developed by Mittagessen / Benjamin KiesslingTrainable OCR and handwritten text recognition (HTR) system for historical texts and non-Latin scripts
eScriptorium
Developed by Scripta ProjectWeb-based transcription platform for segmenting, annotating, and training historical HTR models
docTR
Developed by MindeePython library, REST API templates, and Docker containers for deep learning document parsing
Paperless-ngx
Developed by Paperless-ngx TeamSelf-hosted document management web app wrapping OCRmyPDF and Tesseract for automated searchable archives
Decision guide
| Requirement | Recommendation | Why |
|---|---|---|
| Searchable PDF/A overlays & scanned PDF archiving | OCRmyPDF (MPL-2.0) | Uses Tesseract via CLI/Python/Docker to produce searchable PDF and PDF/A output. |
| Layout analysis, HTML table parsing & multilingual OCR | PaddleOCR (Apache-2.0) | Includes PP-Structure for layout detection and HTML table parsing within the PaddlePaddle ecosystem. |
| Converting PDFs & office files into Markdown/JSON for RAG | Docling (MIT code (model terms vary)) | Parses documents into structured Markdown, HTML, and JSON with reading order and TableFormer table extraction. |
| Offline C++ engine for raster image OCR & hOCR output | Tesseract (Apache-2.0) | Reads raster images to produce raw text, searchable PDF output, hOCR, ALTO, and TSV files. |
| Offline desktop GUI for batch PDF & document processing | Umi-OCR (MIT) | Offers a standalone Windows/Linux GUI with batch file processing, HTTP API, and dual-layer searchable PDF export. |
| Page-oriented layout reading order & table parsing JSON/HTML | Surya (Apache-2.0 code / modified AI Pubs Open RAIL-M weights) | Outputs document page reading order, bounding boxes, and table JSON/HTML (model weights use modified AI Pubs Open RAIL-M). |
| Trainable HTR & OCR for historical or non-Latin documents | Kraken (Apache-2.0) | Provides trainable handwritten text recognition (HTR), layout segmentation, and PageXML/ALTO export. |
| Web team transcription & manual layout annotation | eScriptorium (MIT) | Delivers a web interface for line segmentation, manual correction, collaborative annotation, and model training. |
| Python deep-learning SDK for hierarchical JSON/XML document parsing | docTR (Apache-2.0) | Supplies PyTorch/TensorFlow models, deployment templates, and hierarchical JSON/XML output. |
| Self-hosted document management system with automated OCR search indexing | Paperless-ngx (GPL-3.0) | Automates intake scanning, tagging, and OCRmyPDF/Tesseract indexing inside a searchable document archive. |
Questions people ask
How does a low-level OCR engine differ from a structured document pipeline?
Low-level engines like Tesseract read raster image files to output text, hOCR, or searchable PDFs, while tools like OCRmyPDF wrap Tesseract to add searchable layers and PDF/A output directly to scanned PDF files. Structured document pipelines parse layout and document structure into specialized formats: PaddleOCR exports structured JSON and HTML with layout and table tooling; Docling produces Markdown, HTML, and JSON with reading order and TableFormer; Surya outputs reading-order and table JSON/HTML; and docTR generates hierarchical JSON/XML detections.
Which open source tools handle handwritten text recognition (HTR) and historical manuscripts?
Kraken and eScriptorium specialize in trainable handwritten text recognition and historical manuscript transcription with line-level segmentation and annotation workflows. Everyday printed OCR utilities like Tesseract and OCRmyPDF do not include specialized handwriting recognition models.
Which tools create searchable PDF/A files directly from scanned documents?
OCRmyPDF is specifically designed to create direct PDF/A output with searchable text layers from scanned PDFs. Umi-OCR creates dual-layer searchable PDFs, while Paperless-ngx embeds OCRmyPDF and Tesseract to store searchable document archives and search indexes. Low-level Tesseract outputs searchable PDFs directly from raster image inputs.
What license caveats should I watch for when deploying open-source OCR tools?
While tools like PaddleOCR and docTR use permissive Apache-2.0 licenses for code and weights, others have specific conditions. OCRmyPDF uses weak-copyleft MPL-2.0. Docling uses an MIT code license but individual model weight terms vary. Surya uses Apache-2.0 for its code repository alongside a modified AI Pubs Open RAIL-M model weight license where commercial terms apply to organizations above $5M in revenue or total funding, as well as competing commercial products. Paperless-ngx carries a copyleft GPL-3.0 license. Inspect both code and model weight licenses prior to commercial deployment.
Sources
- OCRmyPDF GitHub repository
- OCRmyPDF license (MPL-2.0)
- OCRmyPDF documentation
- PaddleOCR GitHub repository
- PaddleOCR license (Apache-2.0)
- PaddleOCR official site
- Docling GitHub repository
- Docling license (MIT)
- Docling documentation
- Tesseract GitHub repository
- Tesseract license (Apache-2.0)
- Tesseract documentation
- Umi-OCR GitHub repository
- Umi-OCR license (MIT)
- Umi-OCR documentation
- Surya GitHub repository
- Surya code license (Apache-2.0)
- Surya model weights license (Open RAIL-M)
- Surya documentation
- Kraken GitHub repository
- Kraken license (Apache-2.0)
- Kraken official site
- eScriptorium GitLab repository
- eScriptorium license (MIT)
- eScriptorium documentation
- docTR GitHub repository
- docTR license (Apache-2.0)
- docTR documentation
- Paperless-ngx GitHub repository
- Paperless-ngx license (GPL-3.0)
- Paperless-ngx documentation
Related internal pages
Related self-hosted AI guides and document processing comparisons:
Official Weekly Digest Stay Updated on Open-Source AI
Get net-new open-source models, agent frameworks, inference engines, and tools delivered directly to your inbox every week.
Every project in this guide is audited against the Awesome Open Source AI registry, updated regularly. Active registry profiles are linked above, while unindexed entries link directly to their primary repositories for immediate verification.