Install any skill in seconds. Free to start, no credit card required.
Get Started Free →PDF 数据提取工具。当用户提到"PDF 提取"、"PDF 转 Markdown"、"PDF 解析"、"提取 PDF 内容"、"PDF 转 JSON"、"RAG PDF"时使用。OpenDataLoader PDF 是目前基准测试第一的 PDF 解析器,支持本地模式(快速、确定)和混合 AI 模式(复杂表格、扫描件、公式),输出 Markdown、JSON(带边界框)、HTML。适用于需要从 PDF 提取结构化数据用于 RAG/LLM pipeline,或需要批量处理 PDF 文档的场景。
.claude/skills/itamarzand88-opendataloader-pdf/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 6% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 20% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 61% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 79% | 0% |
<!-- source: opendataloader-pdf — https://raw.githubusercontent.com/chujianyun/skills/main/skills/opendataloader-pdf/SKILL.md -->
PDF 解析器 · 基准测试第一 · RAG/LLM 数据提取利器
bashpip install -U opendataloader-pdf
混合 AI 模式(复杂表格 / OCR / 公式):
bashpip install "opendataloader-pdf[hybrid]"
bash# 快速模式:输出 Markdown + JSON opendataloader-pdf input.pdf output_dir/ # 指定格式 opendataloader-pdf input.pdf output_dir/ --format markdown,json,html # 混合 AI 模式(复杂表格 / 扫描件) opendataloader-pdf --hybrid docling-fast input.pdf output_dir/ # 混合模式 + OCR(扫描件) opendataloader-pdf --hybrid docling-fast --force-ocr input.pdf output_dir/ # 混合模式 + 公式识别 opendataloader-pdf --hybrid docling-fast --hybrid-mode full input.pdf output_dir/
pythonimport opendataloader_pdf # 批量处理(一次调用会启动 JVM,建议批量一次性传入) opendataloader_pdf.convert( input_path=["file1.pdf", "file2.pdf", "folder/"], output_dir="output/", format="markdown,json" )
| 文档类型 | 模式 | 命令 | |---------|------|------| | 标准数字 PDF | 快速(默认) | opendataloader-pdf file.pdf out/ | | 复杂/无线框表格 | 混合 | opendataloader-pdf --hybrid docling-fast file.pdf out/ | | 扫描件 | 混合 + OCR | 同上 + --force-ocr | | 非英语扫描件 | 混合 + OCR | --force-ocr --ocr-lang "ko,en" | | 含数学公式 | 混合 + 公式 | --hybrid docling-fast --hybrid-mode full | | 图表需要描述 | 混合 + 图片描述 | --enrich-picture-description --hybrid-mode full |
保留标题层级、表格结构、列表嵌套,适合直接用于 chunking。
json{ "pages": [{ "page_number": 1, "elements": [{ "type": "heading", "text": "...", "bbox": [x0, y0, x1, y1], "level": 1 }, { "type": "table", "bbox": [x0, y0, x1, y1], "html": "..." }] }] }
每个元素都有 bbox 坐标,方便做源码溯源。
保留布局结构,适合渲染或进一步处理。
convert() 调用会启动一个新的 JVM 进程,所以批量文件建议一次传入,而不是循环多次调用opendataloader-pdf-hybrid --port 5002,然后客户端加 --hybrid docling-fast--enrich-formula 或 --enrich-picture-description 必须在混合服务器和客户端都加 --hybrid-mode full,否则强化功能静默跳过npm run sync,它会重新生成 options.json 和所有 Python/Node.js 绑定| 引擎 | 综合分 | 表格 | 速度(秒/页) | |------|--------|------|--------------| | opendataloader(混合) | 0.90 | 0.93 | 0.43 | | docling | 0.86 | 0.89 | 0.73 | | marker | 0.83 | 0.81 | 53.93 | | mineru | 0.82 | 0.87 | 5.96 | | pymupdf4llm | 0.57 | 0.40 | 0.09 |
pip install opendataloader-pdfnpm install @opendataloader/pdforg.opendataloader:opendataloader-pdf-core| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 10,233 | 7,250 | -29% | 1 | 1 | 0% | 2,238 | 2,870 | +28% | 0 | 0 | — |
case-02 | fail→pass | 13,705 | 6,751 | -51% | 1 | 1 | 0% | 2,517 | 2,674 | +6% | 0 | 0 | — |
case-03 | fail→pass | 20,330 | 3,385 | -83% | 1 | 1 | 0% | 1,649 | 1,981 | +20% | 0 | 0 | — |
case-04 | fail→pass | 5,387 | 2,176 | -60% | 1 | 1 | 0% | 1,089 | 1,749 | +61% | 0 | 0 | — |
case-05 | fail→pass | 5,030 | 2,293 | -54% | 1 | 1 | 0% | 962 | 1,723 | +79% | 0 | 0 | — |
case-06 | fail→pass | 10,079 | 2,821 | -72% | 1 | 1 | 0% | 1,795 | 1,880 | +5% | 0 | 0 | — |
case-07 | fail→pass | 9,763 | 1,457 | -85% | 1 | 1 | 0% | 2,260 | 1,623 | -28% | 0 | 0 | — |
case-08 | fail→pass | 7,398 | 1,671 | -77% | 1 | 1 | 0% | 1,492 | 1,617 | +8% | 0 | 0 | — |
case-09 | fail→pass | 10,257 | 2,494 | -76% | 1 | 1 | 0% | 1,848 | 1,754 | -5% | 0 | 0 | — |
case-10 | fail→pass | 7,774 | 2,299 | -70% | 1 | 1 | 0% | 1,324 | 1,739 | +31% | 0 | 0 | — |
case-11 | fail→pass | 10,718 | 3,105 | -71% | 1 | 1 | 0% | 1,740 | 1,996 | +15% | 0 | 0 | — |
case-12 | pass→pass | 4,618 | 1,580 | -66% | 1 | 1 | 0% | 944 | 1,647 | +74% | 0 | 0 | — |
case-13 | pass→pass | 6,354 | 2,248 | -65% | 1 | 1 | 0% | 1,134 | 1,835 | +62% | 0 | 0 | — |
case-14 | fail→pass | 9,429 | 1,742 | -82% | 1 | 1 | 0% | 1,811 | 1,558 | -14% | 0 | 0 | — |
case-15 | fail→pass | 11,900 | 3,644 | -69% | 1 | 1 | 0% | 2,275 | 2,041 | -10% | 0 | 0 | — |
case-16 | fail→pass | 4,399 | 1,591 | -64% | 1 | 1 | 0% | 797 | 1,603 | +101% | 0 | 0 | — |
case-17 | fail→pass | 1,643 | 1,377 | -16% | 1 | 1 | 0% | 293 | 1,513 | +416% | 0 | 0 | — |
case-18 | fail→pass | 7,988 | 3,282 | -59% | 1 | 1 | 0% | 1,581 | 2,071 | +31% | 0 | 0 | — |
case-19 | fail→pass | 12,760 | 2,764 | -78% | 1 | 1 | 0% | 2,247 | 1,946 | -13% | 0 | 0 | — |
case-20 | fail→pass | 11,624 | 9,841 | -15% | 1 | 1 | 0% | 2,327 | 2,377 | +2% | 0 | 0 | — |
case-21 | pass→pass | 10,144 | 7,232 | -29% | 1 | 1 | 0% | 2,135 | 2,981 | +40% | 0 | 0 | — |
case-22 | pass→pass | 7,008 | 5,727 | -18% | 1 | 1 | 0% | 1,480 | 2,499 | +69% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +82 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.