This skill is based on OpenDataLoader PDF, licensed under Apache License 2.0.
PDF parser for AI-ready data extraction. Open-source. #1 in benchmarks (0.90 overall accuracy).
java -version to verify)bash
# Python
pip install -U opendataloader-pdf
# Python with hybrid AI mode (for complex documents)
pip install -U "opendataloader-pdf[hybrid]"
# Node.js
npm install @opendataloader/pdf
python
import opendataloader_pdf
opendataloader_pdf.convert(
input_path=["file1.pdf", "file2.pdf", "folder/"],
output_dir="output/",
format="markdown,json" # Output formats: markdown, json, html
)
typescript
import { convert } from '@opendataloader/pdf';
await convert(['file1.pdf', 'file2.pdf'], {
outputDir: 'output/',
format: 'markdown,json'
});
bash
# Fast local mode (0.05s/page)
opendataloader-pdf file1.pdf file2.pdf -o output/
# With hybrid AI mode (higher accuracy for complex docs)
opendataloader-pdf --hybrid docling-fast file1.pdf
Document TypeModeCommandStandard digital PDFFast (default)pip install opendataloader-pdfComplex tablesHybridpip install "opendataloader-pdf[hybrid]" + start serverScanned PDFsHybrid + OCRopendataloader-pdf-hybrid --force-ocrMulti-language scannedHybrid + OCR--ocr-lang "zh,en"Mathematical formulasHybrid + formula--enrich-formulaCharts needing descriptionHybrid + picture--enrich-picture-description
EngineOverallTableSpeed (s/page)opendataloader [hybrid]0.900.930.43opendataloader (local)0.720.490.05docling0.860.890.73marker0.830.8153.93pymupdf4llm0.570.400.09
bash
pip install langchain-opendataloader-pdf
python
from langchain_opendataloader_pdf import OpenDataLoaderPDF
loader = OpenDataLoaderPDF(file_path="document.pdf")
docs = loader.load()
JSON output includes:
type: paragraph, heading, table, image, etc.content: text contentbbox: [left, bottom, right, top] in PDF pointspage: page numberheading_level: for headingsIssueSolution"java not found"Install JDK 11+ from adoptium.netSlow repeated callsBatch files in single call; each spawns JVMPoor table accuracyUse hybrid mode ( --hybrid docling-fast)Scanned PDF not extractedUse hybrid mode with --force-ocrNon-English OCR not workSpecify --ocr-lang "zh,en"