OpenDataLoader PDF is a PDF parser that turns digital, scanned, and tagged PDFs into structured output for LLM and retrieval pipelines, and that can also generate accessibility structure tags for PDFs that lack them. It outputs Markdown for chunking, JSON with a bounding box and semantic type for every element (for source citations), HTML, plain text, an annotated PDF for visual debugging, and Tagged PDF.
The core is a deterministic Java engine (Java 11+) exposed through Python, Node.js, and Java SDKs and a CLI. Local mode performs layout analysis, XY-Cut++ reading order, heading and list detection, simple table extraction, image extraction with coordinates, header/footer/watermark filtering, and prompt-injection filtering of hidden, off-page, or invisible text. When a PDF carries structure tags, usestructtree reads reading order and structure from the tags instead of heuristics. Each convert() call starts a JVM, so batching many files per call is the intended usage pattern.
Hybrid mode adds a separate backend server: simple pages stay local, and complex pages route to an AI backend (docling-fast) for borderless and nested tables, OCR in 80+ languages for scanned documents, LaTeX formula extraction, and picture and chart descriptions generated with SmolVLM. A langchain-opendataloader-pdf package provides a LangChain document loader.
In the project's own benchmark over 200 real-world PDFs, hybrid mode scored highest overall:
| Engine | Overall | Reading order | Table | Heading | Speed (s/page) |
|---|---|---|---|---|---|
| opendataloader (hybrid) | 0.907 | 0.934 | 0.928 | 0.821 | 0.463 |
| nutrient | 0.885 | 0.925 | 0.708 | 0.819 | 0.008 |
| Docling | 0.882 | 0.898 | 0.887 | 0.824 | 0.762 |
| marker | 0.861 | 0.890 | 0.808 | 0.796 | 53.932 |
| opendataloader (local) | 0.831 | 0.902 | 0.489 | 0.739 | 0.015 |
| mineru | 0.831 | 0.857 | 0.873 | 0.743 | 5.962 |
On the accessibility side, the auto-tagging step writes structure tags (headings, paragraphs, lists, tables, reading order) into untagged PDFs following the PDF Association's Well-Tagged PDF specification, developed with Dual Lab (the veraPDF developers) and validated with veraPDF. Converting a Tagged PDF to PDF/UA-1 or PDF/UA-2 and the visual accessibility studio are enterprise add-ons. Word, Excel, and PowerPoint inputs are not supported, and no GPU is required.
Features
- Output formats: Markdown, JSON with bounding boxes, HTML, plain text, annotated PDF, and Tagged PDF, combinable in one run
- Deterministic local mode: reading order, heading hierarchy, lists, tables, and image coordinates without a GPU
- Hybrid mode: complex pages routed to an AI backend for borderless tables, OCR, formulas, and chart descriptions
- Tagged PDF input: --use-struct-tree reads the author's structure tags instead of guessing layout
- Prompt-injection filtering: hidden, off-page, and invisible text removed by default, with optional --sanitize for emails, URLs, and phone numbers
- Auto-tagging: untagged PDF in, screen-reader-ready Tagged PDF out, validated with veraPDF
- Three SDKs and a CLI: Python, Node.js, and Java packages plus command-line batch processing
- LangChain loader: OpenDataLoaderPDFLoader for document ingestion
- Image handling: images off, embedded as Base64, or written externally, in PNG or JPEG
- Enterprise add-ons: PDF/UA-1 and PDF/UA-2 export and an accessibility studio
