[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-opendataloader-project--opendataloader-pdf":3,"tool-opendataloader-project--opendataloader-pdf":61},[4,18,26,36,44,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":10,"last_commit_at":24,"category_tags":25,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":27,"name":28,"github_repo":29,"description_zh":30,"stars":31,"difficulty_score":32,"last_commit_at":33,"category_tags":34,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",155373,2,"2026-04-14T11:34:08",[14,13,35],"语言模型",{"id":37,"name":38,"github_repo":39,"description_zh":40,"stars":41,"difficulty_score":32,"last_commit_at":42,"category_tags":43,"status":17},2271,"ComfyUI","Comfy-Org\u002FComfyUI","ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎，专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式，采用直观的节点式流程图界面，让用户通过连接不同的功能模块即可构建个性化的生成管线。\n\n这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景，也能自由组合模型、调整参数并实时预览效果，轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性，不仅支持 Windows、macOS 和 Linux 全平台，还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构，并率先支持 SDXL、Flux、SD3 等前沿模型。\n\n无论是希望深入探索算法潜力的研究人员和开发者，还是追求极致创作自由度的设计师与资深 AI 绘画爱好者，ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能，使其成为当前最灵活、生态最丰富的开源扩散模型工具之一，帮助用户将创意高效转化为现实。",108322,"2026-04-10T11:39:34",[14,15,13],{"id":45,"name":46,"github_repo":47,"description_zh":48,"stars":49,"difficulty_score":32,"last_commit_at":50,"category_tags":51,"status":17},6121,"gemini-cli","google-gemini\u002Fgemini-cli","gemini-cli 是一款由谷歌推出的开源 AI 命令行工具，它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言，它提供了一条从输入提示词到获取模型响应的最短路径，无需切换窗口即可享受智能辅助。\n\n这款工具主要解决了开发过程中频繁上下文切换的痛点，让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用，还是执行复杂的 Git 操作，gemini-cli 都能通过自然语言指令高效处理。\n\n它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口，具备出色的逻辑推理能力；内置 Google 搜索、文件操作及 Shell 命令执行等实用工具；更独特的是，它支持 MCP（模型上下文协议），允许用户灵活扩展自定义集成，连接如图像生成等外部能力。此外，个人谷歌账号即可享受免费的额度支持，且项目基于 Apache 2.0 协议完全开源，是提升终端工作效率的理想助手。",100752,"2026-04-10T01:20:03",[52,13,15,14],"插件",{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":32,"last_commit_at":59,"category_tags":60,"status":17},4721,"markitdown","microsoft\u002Fmarkitdown","MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具，专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片（含 OCR）、音频（含语音转录）、HTML 乃至 YouTube 链接等多种格式的解析，能够精准提取文档中的标题、列表、表格和链接等关键结构信息。\n\n在人工智能应用日益普及的今天，大语言模型（LLM）虽擅长处理文本，却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点，它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式，成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外，它还提供了 MCP（模型上下文协议）服务器，可无缝集成到 Claude Desktop 等 LLM 应用中。\n\n这款工具特别适合开发者、数据科学家及 AI 研究人员使用，尤其是那些需要构建文档检索增强生成（RAG）系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性，但其核心优势在于为机器",93400,"2026-04-06T19:52:38",[52,14],{"id":62,"github_repo":63,"name":64,"description_en":65,"description_zh":66,"ai_summary_zh":67,"readme_en":68,"readme_zh":69,"quickstart_zh":70,"use_case_zh":71,"hero_image_url":72,"owner_login":73,"owner_name":73,"owner_avatar_url":74,"owner_bio":75,"owner_company":76,"owner_location":76,"owner_email":77,"owner_twitter":76,"owner_website":78,"owner_url":79,"languages":80,"stars":105,"forks":106,"last_commit_at":107,"license":108,"difficulty_score":32,"env_os":109,"env_gpu":110,"env_ram":111,"env_deps":112,"category_tags":117,"github_topics":118,"view_count":32,"oss_zip_url":76,"oss_zip_packed_at":76,"status":17,"created_at":139,"updated_at":140,"faqs":141,"releases":170},7484,"opendataloader-project\u002Fopendataloader-pdf","opendataloader-pdf","PDF Parser for AI-ready data. Automate PDF accessibility. Open-source.","opendataloader-pdf 是一款专为人工智能应用打造的开源 PDF 解析工具，旨在将各类 PDF 文件（包括数字版、扫描件及已标记文件）高效转化为机器可读的结构化数据。它主要解决了大语言模型（LLM）和检索增强生成（RAG） pipeline 中非结构化文档难以处理的问题，同时自动化了繁琐的 PDF 无障碍合规流程，大幅降低了手动修复文档的成本。\n\n这款工具非常适合开发者、数据科学家及研究人员使用，尤其是那些需要构建高质量知识库或关注信息无障碍的专业人士。其核心亮点在于卓越的提取精度：在权威基准测试中整体准确率排名第一，不仅能精准识别复杂表格、数学公式和图表，还内置支持 80 多种语言的 OCR 功能以应对低质量扫描件。opendataloader-pdf 提供确定性本地模式与混合 AI 模式，可输出带有坐标信息的 JSON、Markdown 及 HTML，完美适配数据分块与来源溯源需求。此外，它还是首个端到端开源的自动标记工具，能直接将普通 PDF 转换为符合国际标准的 Tagged PDF，助力企业轻松满足全球无障碍法规要求。支持 Python、Node.js 和 Ja","opendataloader-pdf 是一款专为人工智能应用打造的开源 PDF 解析工具，旨在将各类 PDF 文件（包括数字版、扫描件及已标记文件）高效转化为机器可读的结构化数据。它主要解决了大语言模型（LLM）和检索增强生成（RAG） pipeline 中非结构化文档难以处理的问题，同时自动化了繁琐的 PDF 无障碍合规流程，大幅降低了手动修复文档的成本。\n\n这款工具非常适合开发者、数据科学家及研究人员使用，尤其是那些需要构建高质量知识库或关注信息无障碍的专业人士。其核心亮点在于卓越的提取精度：在权威基准测试中整体准确率排名第一，不仅能精准识别复杂表格、数学公式和图表，还内置支持 80 多种语言的 OCR 功能以应对低质量扫描件。opendataloader-pdf 提供确定性本地模式与混合 AI 模式，可输出带有坐标信息的 JSON、Markdown 及 HTML，完美适配数据分块与来源溯源需求。此外，它还是首个端到端开源的自动标记工具，能直接将普通 PDF 转换为符合国际标准的 Tagged PDF，助力企业轻松满足全球无障碍法规要求。支持 Python、Node.js 和 Java 多种开发语言，集成简便且完全开源。","\u003C!-- AI-AGENT-SUMMARY\nname: opendataloader-pdf\ncategory: PDF data extraction, PDF accessibility automation\nlicense: Apache-2.0\nsolves: [PDF to structured data for RAG\u002FLLM pipelines, automate PDF accessibility compliance — layout analysis + auto-tagging to Tagged PDF (first open-source end-to-end)]\ninput: PDF files (digital, scanned, tagged)\noutput: Markdown, JSON (with bounding boxes), HTML, Tagged PDF, PDF\u002FUA (enterprise)\nsdk: Python, Node.js, Java\nrequirements: Java 11+\npricing: open-source core (data extraction, layout analysis, auto-tagging to Tagged PDF), enterprise add-on (PDF\u002FUA export, accessibility studio)\nextraction-benchmark: #1 overall extraction accuracy (0.907) in hybrid mode, 0.928 table extraction accuracy, 0.015s\u002Fpage local mode\naccessibility-validation: PDF Association collaboration, Well-Tagged PDF specification, veraPDF automated validation\nkey-differentiators: [benchmark #1 PDF parser, deterministic output, bounding boxes for every element, XY-Cut++ reading order, AI safety filters, hybrid AI mode, first open-source PDF auto-tagging to Tagged PDF, PDF Association + Dual Lab (veraPDF) collaboration, Well-Tagged PDF spec compliance]\n-->\n\n# OpenDataLoader PDF\n\n**PDF Parser for AI-ready data. Automate PDF accessibility. Open-source.**\n\n[![License](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache_2.0-blue.svg)](https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fblob\u002Fmain\u002FLICENSE)\n[![PyPI version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fopendataloader-pdf.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fopendataloader-pdf\u002F)\n[![npm version](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@opendataloader\u002Fpdf.svg)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@opendataloader\u002Fpdf)\n[![Maven Central](https:\u002F\u002Fimg.shields.io\u002Fmaven-central\u002Fv\u002Forg.opendataloader\u002Fopendataloader-pdf-core.svg)](https:\u002F\u002Fsearch.maven.org\u002Fartifact\u002Forg.opendataloader\u002Fopendataloader-pdf-core)\n[![Java](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FJava-11%2B-blue.svg)](https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf#java)\n\n\u003Ca href=\"https:\u002F\u002Ftrendshift.io\u002Frepositories\u002F21917\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fopendataloader-project_opendataloader-pdf_readme_4a68feb902da.png\" alt=\"opendataloader-project%2Fopendataloader-pdf | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"\u002F>\u003C\u002Fa>\n\n🔍 **PDF parser for AI data extraction** — Extract Markdown, JSON (with bounding boxes), and HTML from any PDF. #1 in benchmarks (0.907 overall). Deterministic local mode + AI hybrid mode for complex pages.\n\n- **How accurate is it?** — #1 in benchmarks: 0.907 overall, 0.928 table accuracy across 200 real-world PDFs including multi-column and scientific papers. Deterministic local mode + AI hybrid mode for complex pages ([benchmarks](#extraction-benchmarks))\n- **Scanned PDFs and OCR?** — Yes. Built-in OCR (80+ languages) in hybrid mode. Works with poor-quality scans at 300 DPI+ ([hybrid mode](#hybrid-mode-1-accuracy-for-complex-pdfs))\n- **Tables, formulas, images, charts?** — Yes. Complex\u002Fborderless tables, LaTeX formulas, and AI-generated picture\u002Fchart descriptions all via hybrid mode ([hybrid mode](#hybrid-mode-1-accuracy-for-complex-pdfs))\n- **How do I use this for RAG?** — `pip install opendataloader-pdf`, convert in 3 lines. Outputs structured Markdown for chunking, JSON with bounding boxes for source citations, and HTML. LangChain integration available. Python, Node.js, Java SDKs ([quick start](#get-started-in-30-seconds) | [LangChain](#langchain-integration))\n\n♿ **PDF accessibility automation** — The same layout analysis engine also powers auto-tagging. First open-source tool to generate Tagged PDFs end-to-end (coming Q2 2026).\n\n- **What's the problem?** — Accessibility regulations are now enforced worldwide. Manual PDF remediation costs $50–200 per document and doesn't scale ([regulations](#pdf-accessibility--pdfua-conversion))\n- **What's free?** — Layout analysis + auto-tagging (Q2 2026, Apache 2.0). Untagged PDF in → Tagged PDF out. No proprietary SDK dependency ([auto-tagging preview](#auto-tagging-preview-coming-q2-2026))\n- **What about PDF\u002FUA compliance?** — Converting Tagged PDF to PDF\u002FUA-1 or PDF\u002FUA-2 is an enterprise add-on. Auto-tagging generates the Tagged PDF; PDF\u002FUA export is the final step ([pipeline](#accessibility-pipeline))\n- **Why trust this?** — Built in collaboration with [Dual Lab](https:\u002F\u002Fduallab.com) ([veraPDF](https:\u002F\u002Fverapdf.org) developers) based on [PDF Association](https:\u002F\u002Fpdfa.org) specifications, best practice guides and expertise of the [PDF Community](https:\u002F\u002Fpdfa.org\u002Fcommunity\u002F). Auto-tagging follows the [Well-Tagged PDF specification](https:\u002F\u002Fpdfa.org\u002Fwtpdf\u002F), validated with veraPDF ([collaboration](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Ftagged-pdf-collaboration))\n\n## Get Started in 30 Seconds\n\n**Requires**: Java 11+ and Python 3.10+ ([Node.js](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fquick-start-nodejs) | [Java](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fquick-start-java) also available)\n\n> Before you start: run `java -version`. If not found, install JDK 11+ from [Adoptium](https:\u002F\u002Fadoptium.net\u002F).\n\n```bash\npip install -U opendataloader-pdf\n```\n\n```python\nimport opendataloader_pdf\n\n# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow\nopendataloader_pdf.convert(\n    input_path=[\"file1.pdf\", \"file2.pdf\", \"folder\u002F\"],\n    output_dir=\"output\u002F\",\n    format=\"markdown,json\"\n)\n```\n\n![OpenDataLoader PDF layout analysis — headings, tables, images detected with bounding boxes](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fopendataloader-project_opendataloader-pdf_readme_7738b2e6ce22.png)\n\n*Annotated PDF output — each element (heading, paragraph, table, image) detected with bounding boxes and semantic type.*\n\n## What Problems Does This Solve?\n\n| Problem | Solution | Status |\n|---------|----------|--------|\n| **PDF structure lost during parsing** — wrong reading order, broken tables, no element coordinates | Deterministic local PDF to Markdown\u002FJSON with bounding boxes, XY-Cut++ reading order | Shipped |\n| **Complex tables, scanned PDFs, formulas, charts** need AI-level understanding | Hybrid mode routes complex pages to AI backend (#1 in benchmarks) | Shipped |\n| **PDF accessibility compliance** — EAA, ADA, Section 508 enforced. Manual remediation $50–200\u002Fdoc | Auto-tagging: layout analysis → Tagged PDF (free, Q2 2026). Built with PDF Association & veraPDF validation. PDF\u002FUA export (enterprise add-on) | Auto-tag: Q2 2026 |\n\n## Capability Matrix\n\n| Capability | Supported | Tier |\n|------------|-----------|------|\n| **Data extraction** | | |\n| Extract text with correct reading order | Yes | Free |\n| Bounding boxes for every element | Yes | Free |\n| Table extraction (simple borders) | Yes | Free |\n| Table extraction (complex\u002Fborderless) | Yes | Free (Hybrid) |\n| Heading hierarchy detection | Yes | Free |\n| List detection (numbered, bulleted, nested) | Yes | Free |\n| Image extraction with coordinates | Yes | Free |\n| AI chart\u002Fimage description | Yes | Free (Hybrid) |\n| OCR for scanned PDFs | Yes | Free (Hybrid) |\n| Formula extraction (LaTeX) | Yes | Free (Hybrid) |\n| Tagged PDF structure extraction | Yes | Free |\n| AI safety (prompt injection filtering) | Yes | Free |\n| Header\u002Ffooter\u002Fwatermark filtering | Yes | Free |\n| **Accessibility** | | |\n| Auto-tagging → Tagged PDF for untagged PDFs | Coming Q2 2026 | Free (Apache 2.0) |\n| PDF\u002FUA-1, PDF\u002FUA-2 export | 💼 Available | Enterprise |\n| Accessibility studio (visual editor) | 💼 Available | Enterprise |\n| **Limitations** | | |\n| Process Word\u002FExcel\u002FPPT | No | — |\n| GPU required | No | — |\n\n## Extraction Benchmarks\n\n**opendataloader-pdf [hybrid] ranks #1 overall (0.907)** across reading order, table, and heading extraction accuracy.\n\n| Engine | Overall | Reading Order | Table | Heading | Speed (s\u002Fpage) |\n|--------|---------|---------------|-------|---------|----------------|\n| **opendataloader [hybrid]** | **0.907** | **0.934** | **0.928** | 0.821 | 0.463 |\n| docling | 0.882 | 0.898 | 0.887 | **0.824** | 0.762 |\n| nutrient | 0.880 | 0.924 | 0.662 | 0.811 | 0.230 |\n| marker | 0.861 | 0.890 | 0.808 | 0.796 | 53.932 |\n| unstructured [hi_res] | 0.841 | 0.904 | 0.588 | 0.749 | 3.008 |\n| edgeparse | 0.837 | 0.894 | 0.717 | 0.706 | 0.036 |\n| opendataloader | 0.831 | 0.902 | 0.489 | 0.739 | **0.015** |\n| mineru | 0.831 | 0.857 | 0.873 | 0.743 | 5.962 |\n| pymupdf4llm | 0.732 | 0.885 | 0.401 | 0.412 | 0.091 |\n| unstructured | 0.686 | 0.882 | 0.000 | 0.388 | 0.077 |\n| markitdown | 0.589 | 0.844 | 0.273 | 0.000 | 0.114 |\n| liteparse | 0.576 | 0.866 | 0.000 | 0.000 | 1.061 |\n\n> Scores normalized to [0, 1]. Higher is better for accuracy; lower is better for speed. **Bold** = best. [Full benchmark details](https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-bench)\n\n[![Benchmark](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fopendataloader-project_opendataloader-pdf_readme_b59317960e07.png)](https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-bench)\n\n[![Quality Breakdown](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fopendataloader-project_opendataloader-pdf_readme_35cbe8c8d7e0.png)](https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-bench)\n\n## Which Mode Should I Use?\n\n| Your Document | Mode | Install | Server Command | Client Command |\n|---------------|------|---------|----------------|----------------|\n| Standard digital PDF | Fast (default) | `pip install opendataloader-pdf` | None needed | `opendataloader-pdf file1.pdf file2.pdf folder\u002F` |\n| Complex or nested tables | **Hybrid** | `pip install \"opendataloader-pdf[hybrid]\"` | `opendataloader-pdf-hybrid --port 5002` | `opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder\u002F` |\n| Scanned \u002F image-based PDF | Hybrid + OCR | `pip install \"opendataloader-pdf[hybrid]\"` | `opendataloader-pdf-hybrid --port 5002 --force-ocr` | `opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder\u002F` |\n| Non-English scanned PDF | Hybrid + OCR | `pip install \"opendataloader-pdf[hybrid]\"` | `opendataloader-pdf-hybrid --port 5002 --force-ocr --ocr-lang \"ko,en\"` | `opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder\u002F` |\n| Mathematical formulas | Hybrid + formula | `pip install \"opendataloader-pdf[hybrid]\"` | `opendataloader-pdf-hybrid --enrich-formula` | `opendataloader-pdf --hybrid docling-fast --hybrid-mode full file1.pdf file2.pdf folder\u002F` |\n| Charts needing description | Hybrid + picture | `pip install \"opendataloader-pdf[hybrid]\"` | `opendataloader-pdf-hybrid --enrich-picture-description` | `opendataloader-pdf --hybrid docling-fast --hybrid-mode full file1.pdf file2.pdf folder\u002F` |\n| Untagged PDFs needing accessibility | Auto-tagging → Tagged PDF | Coming Q2 2026 | — | — |\n\n## Quick Start\n\n### Python\n\n```bash\npip install -U opendataloader-pdf\n```\n\n```python\nimport opendataloader_pdf\n\n# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow\nopendataloader_pdf.convert(\n    input_path=[\"file1.pdf\", \"file2.pdf\", \"folder\u002F\"],\n    output_dir=\"output\u002F\",\n    format=\"markdown,json\"\n)\n```\n\n### Node.js\n\n```bash\nnpm install @opendataloader\u002Fpdf\n```\n\n```typescript\nimport { convert } from '@opendataloader\u002Fpdf';\n\nawait convert(['file1.pdf', 'file2.pdf', 'folder\u002F'], {\n  outputDir: 'output\u002F',\n  format: 'markdown,json'\n});\n```\n\n### Java\n\n```xml\n\u003Cdependency>\n  \u003CgroupId>org.opendataloader\u003C\u002FgroupId>\n  \u003CartifactId>opendataloader-pdf-core\u003C\u002FartifactId>\n\u003C\u002Fdependency>\n```\n\n[Python Quick Start](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fquick-start-python) | [Node.js Quick Start](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fquick-start-nodejs) | [Java Quick Start](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fquick-start-java)\n\n## Hybrid Mode: #1 Accuracy for Complex PDFs\n\nHybrid mode combines fast local Java processing with AI backends. Simple pages stay local (0.02s); complex pages route to AI for +90% table accuracy.\n\n```bash\npip install -U \"opendataloader-pdf[hybrid]\"\n```\n\n**Terminal 1** — Start the backend server:\n\n```bash\nopendataloader-pdf-hybrid --port 5002\n```\n\n**Terminal 2** — Process PDFs:\n\n```bash\n# Batch all files in one call — each invocation spawns a JVM process, so repeated calls are slow\nopendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder\u002F\n```\n\n**Python:**\n\n```python\n# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow\nopendataloader_pdf.convert(\n    input_path=[\"file1.pdf\", \"file2.pdf\", \"folder\u002F\"],\n    output_dir=\"output\u002F\",\n    hybrid=\"docling-fast\"\n)\n```\n\n### OCR for Scanned PDFs\n\nStart the backend with `--force-ocr` for image-based PDFs with no selectable text:\n\n```bash\nopendataloader-pdf-hybrid --port 5002 --force-ocr\n```\n\nFor non-English documents, specify the language:\n\n```bash\nopendataloader-pdf-hybrid --port 5002 --force-ocr --ocr-lang \"ko,en\"\n```\n\nSupported languages: `en`, `ko`, `ja`, `ch_sim`, `ch_tra`, `de`, `fr`, `ar`, and more.\n\n### Formula Extraction (LaTeX)\n\nExtract mathematical formulas as LaTeX from scientific PDFs:\n\n```bash\n# Server: enable formula enrichment\nopendataloader-pdf-hybrid --enrich-formula\n\n# Batch all files in one call — each invocation spawns a JVM process, so repeated calls are slow\nopendataloader-pdf --hybrid docling-fast --hybrid-mode full file1.pdf file2.pdf folder\u002F\n```\n\nOutput in JSON:\n```json\n{\n  \"type\": \"formula\",\n  \"page number\": 1,\n  \"bounding box\": [226.2, 144.7, 377.1, 168.7],\n  \"content\": \"\\\\frac{f(x+h) - f(x)}{h}\"\n}\n```\n\n> **Note**: Formula and picture description enrichments require `--hybrid-mode full` on the client side.\n\n### Chart & Image Description\n\nGenerate AI descriptions for charts and images — useful for RAG search and accessibility alt text:\n\n```bash\n# Server\nopendataloader-pdf-hybrid --enrich-picture-description\n\n# Batch all files in one call — each invocation spawns a JVM process, so repeated calls are slow\nopendataloader-pdf --hybrid docling-fast --hybrid-mode full file1.pdf file2.pdf folder\u002F\n```\n\nOutput in JSON:\n```json\n{\n  \"type\": \"picture\",\n  \"page number\": 1,\n  \"bounding box\": [72.0, 400.0, 540.0, 650.0],\n  \"description\": \"A bar chart showing waste generation by region from 2016 to 2030...\"\n}\n```\n\n> Uses SmolVLM (256M), a lightweight vision model. Custom prompts supported via `--picture-description-prompt`.\n\n### Hancom Data Loader Integration — Coming Soon\n\nEnterprise-grade AI document analysis via [Hancom Data Loader](https:\u002F\u002Fsdk.hancom.com\u002Fen\u002Fservices\u002F1?utm_source=github&utm_medium=readme&utm_campaign=opendataloader-pdf) — customer-customized models trained on your domain-specific documents. 30+ element types (tables, charts, formulas, captions, footnotes, etc.), VLM-based image\u002Fchart understanding, complex table extraction (merged cells, nested tables), SLA-backed OCR for scanned documents, and native HWP\u002FHWPX support. Supports PDF, DOCX, XLSX, PPTX, HWP, PNG, JPG. [Live demo](https:\u002F\u002Flivedemo.sdk.hancom.com\u002Fen\u002Fdataloader?utm_source=github&utm_medium=readme&utm_campaign=opendataloader-pdf)\n\n[Hybrid Mode Guide](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fhybrid-mode)\n\n## Output Formats\n\n| Format | Use Case |\n|--------|----------|\n| **JSON** | Structured data with bounding boxes, semantic types |\n| **Markdown** | Clean text for LLM context, RAG chunks |\n| **HTML** | Web display with styling |\n| **Annotated PDF** | Visual debugging — see detected structures ([sample](https:\u002F\u002Fopendataloader.org\u002Fdemo\u002Fsamples\u002F01030000000000)) |\n| **Text** | Plain text extraction |\n\nCombine formats: `format=\"json,markdown\"`\n\n### JSON Output Example\n\n```json\n{\n  \"type\": \"heading\",\n  \"id\": 42,\n  \"level\": \"Title\",\n  \"page number\": 1,\n  \"bounding box\": [72.0, 700.0, 540.0, 730.0],\n  \"heading level\": 1,\n  \"font\": \"Helvetica-Bold\",\n  \"font size\": 24.0,\n  \"text color\": \"[0.0]\",\n  \"content\": \"Introduction\"\n}\n```\n\n| Field | Description |\n|-------|-------------|\n| `type` | Element type: heading, paragraph, table, list, image, caption, formula |\n| `id` | Unique identifier for cross-referencing |\n| `page number` | 1-indexed page reference |\n| `bounding box` | `[left, bottom, right, top]` in PDF points (72pt = 1 inch) |\n| `heading level` | Heading depth (1+) |\n| `content` | Extracted text |\n\n[Full JSON Schema](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fjson-schema)\n\n## Advanced Features\n\n### Tagged PDF Support\n\nWhen a PDF has structure tags, OpenDataLoader extracts the **exact layout** the author intended — no guessing, no heuristics. Headings, lists, tables, and reading order are preserved from the source.\n\n```python\n# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow\nopendataloader_pdf.convert(\n    input_path=[\"file1.pdf\", \"file2.pdf\", \"folder\u002F\"],\n    output_dir=\"output\u002F\",\n    use_struct_tree=True           # Use native PDF structure tags\n)\n```\n\nMost PDF parsers ignore structure tags entirely. [Learn more](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Ftagged-pdf)\n\n### AI Safety: Prompt Injection Protection\n\nPDFs can contain hidden prompt injection attacks. OpenDataLoader automatically filters:\n\n- Hidden text (transparent, zero-size fonts)\n- Off-page content\n- Suspicious invisible layers\n\nTo sanitize sensitive data (emails, URLs, phone numbers → placeholders), enable it explicitly:\n\n```bash\n# Batch all files in one call — each invocation spawns a JVM process, so repeated calls are slow\nopendataloader-pdf file1.pdf file2.pdf folder\u002F --sanitize\n```\n\n[AI Safety Guide](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fai-safety)\n\n### LangChain Integration\n\n```bash\npip install -U langchain-opendataloader-pdf\n```\n\n```python\nfrom langchain_opendataloader_pdf import OpenDataLoaderPDFLoader\n\nloader = OpenDataLoaderPDFLoader(\n    file_path=[\"file1.pdf\", \"file2.pdf\", \"folder\u002F\"],\n    format=\"text\"\n)\ndocuments = loader.load()\n```\n\n[LangChain Docs](https:\u002F\u002Fdocs.langchain.com\u002Foss\u002Fpython\u002Fintegrations\u002Fdocument_loaders\u002Fopendataloader_pdf) | [GitHub](https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Flangchain-opendataloader-pdf) | [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Flangchain-opendataloader-pdf\u002F)\n\n### Advanced Options\n\n```python\n# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow\nopendataloader_pdf.convert(\n    input_path=[\"file1.pdf\", \"file2.pdf\", \"folder\u002F\"],\n    output_dir=\"output\u002F\",\n    format=\"json,markdown,pdf\",\n    image_output=\"embedded\",        # \"off\", \"embedded\" (Base64), or \"external\" (default)\n    image_format=\"jpeg\",            # \"png\" or \"jpeg\"\n    use_struct_tree=True,           # Use native PDF structure\n)\n```\n\n[Full CLI Options Reference](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fcli-options-reference)\n\n## PDF Accessibility & PDF\u002FUA Conversion\n\n**Problem**: Millions of existing PDFs lack structure tags, failing accessibility regulations (EAA, ADA\u002FSection 508, Korea Digital Inclusion Act). Manual remediation costs $50–200 per document and doesn't scale.\n\n**OpenDataLoader's approach**: Built in collaboration with [PDF Association](https:\u002F\u002Fpdfa.org) and [Dual Lab](https:\u002F\u002Fduallab.com) (developers of [veraPDF](https:\u002F\u002Fverapdf.org), the industry-reference open-source PDF\u002FA and PDF\u002FUA validator). Auto-tagging follows the [Well-Tagged PDF specification](https:\u002F\u002Fpdfa.org\u002Fresource\u002Fwell-tagged-pdf\u002F) and is validated programmatically using veraPDF — automated conformance checks against PDF accessibility standards, not manual review. No existing open-source tool generates Tagged PDFs end-to-end — most rely on proprietary SDKs for the tag-writing step. OpenDataLoader does it all under Apache 2.0. ([collaboration details](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Ftagged-pdf-collaboration))\n\n| Regulation | Deadline | Requirement |\n|------------|----------|-------------|\n| **European Accessibility Act (EAA)** | June 28, 2025 | Accessible digital products across the EU |\n| **ADA & Section 508** | In effect | U.S. federal agencies and public accommodations |\n| **Digital Inclusion Act** | In effect | South Korea digital service accessibility |\n\n### Standards & Validation\n\n| Aspect | Detail |\n|--------|--------|\n| **Specification** | [Well-Tagged PDF](https:\u002F\u002Fpdfa.org\u002Fresource\u002Fwell-tagged-pdf\u002F) by PDF Association |\n| **Validation** | [veraPDF](https:\u002F\u002Fverapdf.org) — industry-reference open-source PDF\u002FA & PDF\u002FUA validator |\n| **Collaboration** | PDF Association + [Dual Lab](https:\u002F\u002Fduallab.com) (veraPDF developers) co-develop tagging and validation |\n| **License** | Auto-tagging → Tagged PDF: Apache 2.0 (free). PDF\u002FUA export: Enterprise |\n\n### Accessibility Pipeline\n\n| Step | Feature | Status | Tier |\n|------|---------|--------|------|\n| 1. **Audit** | Read existing PDF tags, detect untagged PDFs | Shipped | Free |\n| 2. **Auto-tag → Tagged PDF** | Generate structure tags for untagged PDFs | Coming Q2 2026 | Free (Apache 2.0) |\n| 3. **Export PDF\u002FUA** | Convert to PDF\u002FUA-1 or PDF\u002FUA-2 compliant files | 💼 Available | Enterprise |\n| 4. **Visual editing** | Accessibility studio — review and fix tags | 💼 Available | Enterprise |\n\n> **💼 Enterprise features** are available on request. [Contact us](https:\u002F\u002Fopendataloader.org\u002Fcontact) to get started.\n\n### Auto-Tagging Preview (Coming Q2 2026)\n\n```python\n# API shape preview — available Q2 2026\nopendataloader_pdf.convert(\n    input_path=[\"file1.pdf\", \"file2.pdf\", \"folder\u002F\"],\n    output_dir=\"output\u002F\",\n    auto_tag=True                   # Generate structure tags for untagged PDFs\n)\n```\n\n### End-to-End Compliance Workflow\n\n```\nExisting PDFs (untagged)\n    │\n    ▼\n┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐\n│  1. Audit       │───>│  2. Auto-Tag    │───>│  3. Export       │───>│  4. Studio       │\n│  (check tags)   │    │  (→ Tagged PDF) │    │  (PDF\u002FUA)        │    │  (visual editor) │\n└─────────────────┘    └─────────────────┘    └─────────────────┘    └─────────────────┘\n        │                      │                      │                      │\n        ▼                      ▼                      ▼                      ▼\n  use_struct_tree         auto_tag              PDF\u002FUA export       Accessibility Studio\n  (Available now)    (Q2 2026, Apache 2.0)    (Enterprise)          (Enterprise)\n```\n\n[PDF Accessibility Guide](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Faccessibility-compliance)\n\n## Roadmap\n\n| Feature | Timeline | Tier |\n|---------|----------|------|\n| **Auto-tagging → Tagged PDF** — Generate Tagged PDFs from untagged PDFs | Q2 2026 | Free |\n| **[Hancom Data Loader](https:\u002F\u002Fsdk.hancom.com\u002Fen\u002Fservices\u002F1?utm_source=github&utm_medium=readme&utm_campaign=opendataloader-pdf)** — Enterprise AI document analysis, customer-customized models, VLM-based chart\u002Fimage understanding, production-grade OCR | Q2-Q3 2026 | Planned |\n| **Structure validation** — Verify PDF tag trees | Q2 2026 | Planned |\n\n[Full Roadmap](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fupcoming-roadmap)\n\n## Frequently Asked Questions\n\n### What is the best PDF parser for RAG?\n\nFor RAG pipelines, you need a parser that preserves document structure, maintains correct reading order, and provides element coordinates for citations. OpenDataLoader is designed specifically for this — it outputs structured JSON with bounding boxes, handles multi-column layouts with XY-Cut++, and runs locally without GPU. In hybrid mode, it ranks #1 overall (0.907) in benchmarks.\n\n### What is the best open-source PDF parser?\n\nOpenDataLoader PDF is the only open-source parser that combines: rule-based deterministic extraction (no GPU), bounding boxes for every element, XY-Cut++ reading order, built-in AI safety filters, native Tagged PDF support, and hybrid AI mode for complex documents. It ranks #1 in overall accuracy (0.907) while running locally on CPU.\n\n### How do I extract tables from PDF for LLM?\n\nOpenDataLoader detects tables using border analysis and text clustering, preserving row\u002Fcolumn structure. For complex tables, enable hybrid mode for +90% accuracy improvement (0.489 to 0.928 TEDS score):\n\n```python\n# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow\nopendataloader_pdf.convert(\n    input_path=[\"file1.pdf\", \"file2.pdf\", \"folder\u002F\"],\n    output_dir=\"output\u002F\",\n    format=\"json\",\n    hybrid=\"docling-fast\"           # For complex tables\n)\n```\n\n### How does it compare to docling, marker, or pymupdf4llm?\n\nOpenDataLoader [hybrid] ranks #1 overall (0.907) across reading order, table, and heading accuracy. Key differences: docling (0.882) is strong but lacks bounding boxes and AI safety filters. marker (0.861) requires GPU and is 1000x slower (53.932s\u002Fpage). pymupdf4llm (0.732) is fast but has poor table (0.401) and heading (0.412) accuracy. OpenDataLoader is the only parser that combines deterministic local extraction, bounding boxes for every element, and built-in prompt injection protection. See [full benchmark](https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-bench).\n\n### Can I use this without sending data to the cloud?\n\nYes. OpenDataLoader runs 100% locally. No API calls, no data transmission — your documents never leave your environment. The hybrid mode backend also runs locally on your machine. Ideal for legal, healthcare, and financial documents.\n\n### Does it support OCR for scanned PDFs?\n\nYes, via hybrid mode. Install with `pip install \"opendataloader-pdf[hybrid]\"`, start the backend with `--force-ocr`, then process as usual. Supports multiple languages including Korean, Japanese, Chinese, Arabic, and more via `--ocr-lang`.\n\n### Does it work with Korean, Japanese, or Chinese documents?\n\nYes. For digital PDFs, text extraction works out of the box. For scanned PDFs, use hybrid mode with `--force-ocr --ocr-lang \"ko,en\"` (or `ja`, `ch_sim`, `ch_tra`). Coming soon: [Hancom Data Loader](https:\u002F\u002Fsdk.hancom.com\u002Fen\u002Fservices\u002F1?utm_source=github&utm_medium=readme&utm_campaign=opendataloader-pdf) integration — enterprise-grade AI document analysis with built-in production-grade OCR and customer-customized models optimized for your specific document types and workflows.\n\n### How fast is it?\n\nLocal mode processes 60+ pages per second on CPU (0.02s\u002Fpage). Hybrid mode processes 2+ pages per second (0.46s\u002Fpage) with significantly higher accuracy for complex documents. No GPU required. Benchmarked on Apple M4. [Full benchmark details](https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-bench). With multi-process batch processing, throughput exceeds 100 pages per second on 8+ core machines.\n\n### Does it handle multi-column layouts?\n\nYes. OpenDataLoader uses XY-Cut++ reading order analysis to correctly sequence text across multi-column pages, sidebars, and mixed layouts. This works in both local and hybrid modes without any configuration.\n\n### What is hybrid mode?\n\nHybrid mode combines fast local Java processing with an AI backend. Simple pages are processed locally (0.02s\u002Fpage); complex pages (tables, scanned content, formulas, charts) are automatically routed to the AI backend for higher accuracy. The backend runs locally on your machine — no cloud required. See [Which Mode Should I Use?](#which-mode-should-i-use) and [Hybrid Mode Guide](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fhybrid-mode).\n\n### Does it work with LangChain?\n\nYes. Install `langchain-opendataloader-pdf` for an official LangChain document loader integration. See [LangChain docs](https:\u002F\u002Fdocs.langchain.com\u002Foss\u002Fpython\u002Fintegrations\u002Fdocument_loaders\u002Fopendataloader_pdf).\n\n### How do I chunk PDFs for RAG?\n\nOpenDataLoader outputs structured Markdown with headings, tables, and lists preserved — ideal input for semantic chunking. Each element in JSON output includes `type`, `heading level`, and `page number`, so you can split by section or page boundary. For most RAG pipelines: parse with `format=\"markdown\"` for text chunks, or `format=\"json\"` when you need element-level control. Pair with LangChain's `RecursiveCharacterTextSplitter` or your own heading-based splitter for best results.\n\n### How do I cite PDF sources in RAG answers?\n\nEvery element in JSON output includes a `bounding box` (`[left, bottom, right, top]` in PDF points) and `page number`. When your RAG pipeline returns an answer, map the source chunk back to its bounding box to highlight the exact location in the original PDF. This enables \"click to source\" UX — users see which paragraph, table, or figure the answer came from. No other open-source parser provides bounding boxes for every element by default.\n\n### How do I convert PDF to Markdown for LLM?\n\n```python\nimport opendataloader_pdf\n\n# Batch all files in one call — each convert() spawns a JVM process, so repeated calls are slow\nopendataloader_pdf.convert(\n    input_path=[\"file1.pdf\", \"file2.pdf\", \"folder\u002F\"],\n    output_dir=\"output\u002F\",\n    format=\"markdown\"\n)\n```\n\nOpenDataLoader preserves heading hierarchy, table structure, and reading order in the Markdown output. For complex documents with borderless tables or scanned pages, use hybrid mode (`hybrid=\"docling-fast\"`) for higher accuracy. The output is clean enough to feed directly into LLM context windows or RAG chunking pipelines.\n\n### Is there an automated PDF accessibility remediation tool?\n\nYes. OpenDataLoader is the first open-source tool that automates PDF accessibility end-to-end. Built in collaboration with [PDF Association](https:\u002F\u002Fpdfa.org) and [Dual Lab](https:\u002F\u002Fduallab.com) (veraPDF developers), auto-tagging follows the Well-Tagged PDF specification and is validated programmatically using veraPDF. The layout analysis engine detects document structure (headings, tables, lists, reading order) and generates accessibility tags automatically. Auto-tagging (Q2 2026) converts untagged PDFs into Tagged PDFs under Apache 2.0 — no proprietary SDK dependency. For organizations needing full PDF\u002FUA compliance, enterprise add-ons provide PDF\u002FUA export and a visual tag editor. This replaces manual remediation workflows that typically cost $50–200+ per document.\n\n### Is this really the first open-source PDF auto-tagging tool?\n\nYes. Existing tools either depend on proprietary SDKs for writing structure tags, only output non-PDF formats (e.g., Docling outputs Markdown\u002FJSON but cannot produce Tagged PDFs), or require manual intervention. OpenDataLoader is the first to do layout analysis → tag generation → Tagged PDF output entirely under an open-source license (Apache 2.0), with no proprietary dependency. Auto-tagging follows the PDF Association's Well-Tagged PDF specification and is validated using veraPDF, the industry-reference open-source PDF\u002FA and PDF\u002FUA validator.\n\n### How do I convert existing PDFs to PDF\u002FUA?\n\nOpenDataLoader provides an end-to-end pipeline: audit existing PDFs for tags (`use_struct_tree=True`), auto-tag untagged PDFs into Tagged PDFs (Q2 2026, free under Apache 2.0), and export as PDF\u002FUA-1 or PDF\u002FUA-2 (enterprise add-on). Auto-tagging follows the PDF Association's Well-Tagged PDF specification and is validated using veraPDF. Auto-tagging generates the Tagged PDF; PDF\u002FUA export is the final step. [Contact us](https:\u002F\u002Fopendataloader.org\u002Fcontact) for enterprise integration.\n\n### How do I make my PDFs accessible for EAA compliance?\n\nThe European Accessibility Act requires accessible digital products by June 28, 2025. OpenDataLoader supports the full remediation workflow: audit → auto-tag → Tagged PDF → PDF\u002FUA export. Auto-tagging follows the PDF Association's Well-Tagged PDF specification and is validated using veraPDF, ensuring standards-compliant output. Auto-tagging to Tagged PDF will be open-sourced under Apache 2.0 (Q2 2026). PDF\u002FUA export and accessibility studio are enterprise add-ons. See our [Accessibility Guide](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Faccessibility-compliance).\n\n### Is OpenDataLoader PDF free?\n\nThe core library is **open-source under Apache 2.0** — free for commercial use. This includes all extraction features (text, tables, images, OCR, formulas, charts via hybrid mode), AI safety filters, Tagged PDF support, and auto-tagging to Tagged PDF (Q2 2026). We are committed to keeping the core accessibility pipeline (layout analysis → auto-tagging → Tagged PDF) free and open-source. Enterprise add-ons (PDF\u002FUA export, accessibility studio) are available for organizations needing end-to-end regulatory compliance.\n\n### Why did the license change from MPL 2.0 to Apache 2.0?\n\nMPL 2.0 requires file-level copyleft, which often triggers legal review before enterprise adoption. Apache 2.0 is fully permissive — no copyleft obligations, easier to integrate into commercial projects. If you are using a pre-2.0 version, it remains under MPL 2.0 and you can continue using it. Upgrading to 2.0+ means your project follows Apache 2.0 terms, which are strictly more permissive — no additional obligations, no action needed on your side.\n\n## Documentation\n\n- [Quick Start (Python)](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fquick-start-python)\n- [Quick Start (Node.js)](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fquick-start-nodejs)\n- [Quick Start (Java)](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fquick-start-java)\n- [JSON Schema Reference](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fjson-schema)\n- [CLI Options](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fcli-options-reference)\n- [Hybrid Mode Guide](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fhybrid-mode)\n- [Tagged PDF Support](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Ftagged-pdf)\n- [AI Safety Features](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fai-safety)\n- [PDF Accessibility](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Faccessibility-compliance)\n\n## Contributing\n\nWe welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.\n\n## License\n\n[Apache License 2.0](LICENSE)\n\n> **Note:** Versions prior to 2.0 are licensed under the [Mozilla Public License 2.0](https:\u002F\u002Fwww.mozilla.org\u002FMPL\u002F2.0\u002F).\n\n---\n\n**Found this useful?** Give us a star to help others discover OpenDataLoader.\n","\u003C!-- AI-AGENT-SUMMARY\n名称: opendataloader-pdf\n类别: PDF 数据提取、PDF 无障碍自动化\n许可证: Apache-2.0\n解决的问题: [将 PDF 转换为 RAG\u002FLLM 流程所需的结构化数据，自动化 PDF 无障碍合规 — 布局分析 + 自动标记为 Tagged PDF（首个开源端到端方案）]\n输入: PDF 文件（数字化、扫描版、已标记）\n输出: Markdown、JSON（带边界框）、HTML、Tagged PDF、PDF\u002FUA（企业级）\nSDK: Python、Node.js、Java\n要求: Java 11+\n定价: 开源核心（数据提取、布局分析、自动标记为 Tagged PDF），企业级附加组件（PDF\u002FUA 导出、无障碍工作室）\n提取基准测试: 混合模式下整体提取准确率排名第一（0.907），表格提取准确率 0.928，本地模式下 0.015 秒\u002F页\n无障碍验证: 与 PDF 协会合作，遵循 Well-Tagged PDF 规范，使用 veraPDF 进行自动化验证\n关键差异化优势: [基准测试第一的 PDF 解析器，确定性输出，每个元素均有边界框，XY-Cut++ 阅读顺序，AI 安全过滤器，混合 AI 模式，首个开源 PDF 自动标记为 Tagged PDF 的工具，与 PDF 协会 + Dual Lab（veraPDF）合作，符合 Well-Tagged PDF 规范]\n-->\n\n# OpenDataLoader PDF\n\n**面向 AI 的 PDF 解析器。自动化 PDF 无障碍功能。开源。**\n\n[![许可证](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache_2.0-blue.svg)](https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fblob\u002Fmain\u002FLICENSE)\n[![PyPI 版本](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fopendataloader-pdf.svg)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fopendataloader-pdf\u002F)\n[![npm 版本](https:\u002F\u002Fimg.shields.io\u002Fnpm\u002Fv\u002F@opendataloader\u002Fpdf.svg)](https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@opendataloader\u002Fpdf)\n[![Maven Central](https:\u002F\u002Fimg.shields.io\u002Fmaven-central\u002Fv\u002Forg.opendataloader\u002Fopendataloader-pdf-core.svg)](https:\u002F\u002Fsearch.maven.org\u002Fartifact\u002Forg.opendataloader\u002Fopendataloader-pdf-core)\n[![Java](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FJava-11%2B-blue.svg)](https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf#java)\n\n\u003Ca href=\"https:\u002F\u002Ftrendshift.io\u002Frepositories\u002F21917\" target=\"_blank\">\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fopendataloader-project_opendataloader-pdf_readme_4a68feb902da.png\" alt=\"opendataloader-project%2Fopendataloader-pdf | Trendshift\" style=\"width: 250px; height: 55px;\" width=\"250\" height=\"55\"\u002F>\u003C\u002Fa>\n\n🔍 **用于 AI 数据提取的 PDF 解析器** — 从任何 PDF 中提取 Markdown、JSON（带边界框）和 HTML。基准测试排名第一（总体 0.907）。具有确定性的本地模式以及适用于复杂页面的混合 AI 模式。\n\n- **准确度如何？** — 基准测试排名第一：总体准确率为 0.907，表格准确率为 0.928，测试对象涵盖 200 个真实场景中的多栏文档和科技论文。提供确定性的本地模式以及适用于复杂页面的混合 AI 模式（[基准测试](#extraction-benchmarks)）\n- **扫描版 PDF 和 OCR 呢？** — 支持。混合模式内置 OCR 功能（支持 80 多种语言）。即使在 300 DPI 及以上分辨率下，也能处理质量较差的扫描件（[混合模式](#hybrid-mode-1-accuracy-for-complex-pdfs)）\n- **表格、公式、图片、图表呢？** — 支持。复杂的无边框表格、LaTeX 公式以及由 AI 生成的图片\u002F图表描述均可通过混合模式实现（[混合模式](#hybrid-mode-1-accuracy-for-complex-pdfs)）\n- **如何将其用于 RAG？** — 使用 `pip install opendataloader-pdf`，只需三行代码即可完成转换。输出结构化的 Markdown 以供分块处理，带有边界框的 JSON 用于来源引用，以及 HTML。支持 LangChain 集成。提供 Python、Node.js 和 Java SDK（[快速入门](#get-started-in-30-seconds) | [LangChain 集成](#langchain-integration)）\n\n♿ **PDF 无障碍自动化** — 同样的布局分析引擎也可用于自动标记。首个开源工具，可端到端生成 Tagged PDF（预计于 2026 年第二季度推出）。\n\n- **问题是什么？** — 目前全球范围内均已强制执行无障碍法规。手动修复 PDF 每份需花费 50 至 200 美元，且无法规模化（[法规](#pdf-accessibility--pdfua-conversion)）\n- **免费部分是什么？** — 布局分析 + 自动标记（2026 年第二季度，Apache 2.0 许可证）。输入未标记的 PDF，输出 Tagged PDF。无需依赖专有 SDK（[自动标记预览](#auto-tagging-preview-coming-q2-2026)）\n- **PDF\u002FUA 合规呢？** — 将 Tagged PDF 转换为 PDF\u002FUA-1 或 PDF\u002FUA-2 属于企业级附加功能。自动标记生成 Tagged PDF；PDF\u002FUA 导出则是最后一步（[流程](#accessibility-pipeline)）\n- **为何值得信赖？** — 本项目与 [Dual Lab](https:\u002F\u002Fduallab.com)（[veraPDF](https:\u002F\u002Fverapdf.org) 的开发者）合作开发，基于 [PDF 协会](https:\u002F\u002Fpdfa.org) 的规范、最佳实践指南以及 [PDF 社区](https:\u002F\u002Fpdfa.org\u002Fcommunity\u002F) 的专业知识。自动标记遵循 [Well-Tagged PDF 规范](https:\u002F\u002Fpdfa.org\u002Fwtpdf\u002F)，并通过 veraPDF 验证（[合作](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Ftagged-pdf-collaboration)）\n\n## 30 秒快速入门\n\n**所需条件**: Java 11+ 和 Python 3.10+（[Node.js](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fquick-start-nodejs) | [Java](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fquick-start-java) 亦可用）\n\n> 在开始之前，请运行 `java -version`。若未找到，请从 [Adoptium](https:\u002F\u002Fadoptium.net\u002F) 安装 JDK 11+。\n\n```bash\npip install -U opendataloader-pdf\n```\n\n```python\nimport opendataloader_pdf\n\n# 批量处理所有文件只需一次调用 — 每次调用 convert() 都会启动一个 JVM 进程，因此重复调用效率较低\nopendataloader_pdf.convert(\n    input_path=[\"file1.pdf\", \"file2.pdf\", \"folder\u002F\"],\n    output_dir=\"output\u002F\",\n    format=\"markdown,json\"\n)\n```\n\n![OpenDataLoader PDF 布局分析 — 检测到标题、表格、图片，并用边界框标注](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fopendataloader-project_opendataloader-pdf_readme_7738b2e6ce22.png)\n\n*带注释的 PDF 输出 — 每个元素（标题、段落、表格、图片）均被检测到，并附有边界框及语义类型。*\n\n## 本工具能解决哪些问题？\n\n| 问题 | 解决方案 | 状态 |\n|---------|----------|--------|\n| **解析过程中 PDF 结构丢失** — 阅读顺序错误、表格损坏、缺少元素坐标 | 确定性的本地模式可将 PDF 转换为带边界框的 Markdown\u002FJSON，并采用 XY-Cut++ 阅读顺序 | 已发布 |\n| **复杂表格、扫描版 PDF、公式、图表** 需要 AI 级别的理解 | 混合模式会将复杂页面路由至 AI 后端（基准测试排名第一） | 已发布 |\n| **PDF 无障碍合规** — EAA、ADA、第 508 条款已被强制执行。手动修复每份文档需花费 50–200 美元 | 自动标记：布局分析 → Tagged PDF（免费，2026 年第二季度）。与 PDF 协会合作开发，并通过 veraPDF 验证。PDF\u002FUA 导出（企业级附加功能） | 自动标记：2026 年第二季度 |\n\n## 功能矩阵\n\n| 功能 | 支持情况 | 等级 |\n|------------|-----------|------|\n| **数据提取** | | |\n| 提取具有正确阅读顺序的文本 | 是 | 免费 |\n| 为每个元素提供边界框 | 是 | 免费 |\n| 表格提取（简单边框） | 是 | 免费 |\n| 表格提取（复杂\u002F无边框） | 是 | 免费（混合模式） |\n| 标题层级检测 | 是 | 免费 |\n| 列表检测（编号、项目符号、嵌套列表） | 是 | 免费 |\n| 带坐标信息的图像提取 | 是 | 免费 |\n| AI图表\u002F图像描述 | 是 | 免费（混合模式） |\n| 扫描PDF的OCR | 是 | 免费（混合模式） |\n| 公式提取（LaTeX） | 是 | 免费（混合模式） |\n| 标签化PDF结构提取 | 是 | 免费 |\n| AI安全（提示注入过滤） | 是 | 免费 |\n| 页眉\u002F页脚\u002F水印过滤 | 是 | 免费 |\n| **可访问性** | | |\n| 自动标签→为未标记PDF生成标签化PDF | 预计2026年第二季度推出 | 免费（Apache 2.0） |\n| PDF\u002FUA-1、PDF\u002FUA-2导出 | 💼 可用 | 企业版 |\n| 可访问性工作室（可视化编辑器） | 💼 可用 | 企业版 |\n| **限制** | | |\n| 处理Word\u002FExcel\u002FPPT文件 | 否 | — |\n| 是否需要GPU | 否 | — |\n\n## 提取基准测试\n\n**opendataloader-pdf [混合模式]在阅读顺序、表格和标题提取准确度方面综合排名第一（0.907分）。**\n\n| 引擎 | 综合得分 | 阅读顺序 | 表格 | 标题 | 速度（秒\u002F页） |\n|--------|---------|---------------|-------|---------|----------------|\n| **opendataloader [混合模式]** | **0.907** | **0.934** | **0.928** | 0.821 | 0.463 |\n| docling | 0.882 | 0.898 | 0.887 | **0.824** | 0.762 |\n| nutrient | 0.880 | 0.924 | 0.662 | 0.811 | 0.230 |\n| marker | 0.861 | 0.890 | 0.808 | 0.796 | 53.932 |\n| unstructured [hi_res] | 0.841 | 0.904 | 0.588 | 0.749 | 3.008 |\n| edgeparse | 0.837 | 0.894 | 0.717 | 0.706 | 0.036 |\n| opendataloader | 0.831 | 0.902 | 0.489 | 0.739 | **0.015** |\n| mineru | 0.831 | 0.857 | 0.873 | 0.743 | 5.962 |\n| pymupdf4llm | 0.732 | 0.885 | 0.401 | 0.412 | 0.091 |\n| unstructured | 0.686 | 0.882 | 0.000 | 0.388 | 0.077 |\n| markitdown | 0.589 | 0.844 | 0.273 | 0.000 | 0.114 |\n| liteparse | 0.576 | 0.866 | 0.000 | 0.000 | 1.061 |\n\n> 分数已归一化至[0, 1]。准确度越高越好；速度越低越好。**加粗**表示最佳。[完整基准测试详情](https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-bench)\n\n[![基准测试](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fopendataloader-project_opendataloader-pdf_readme_b59317960e07.png)](https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-bench)\n\n[![质量分解图](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fopendataloader-project_opendataloader-pdf_readme_35cbe8c8d7e0.png)](https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-bench)\n\n## 我应该使用哪种模式？\n\n| 您的文档 | 模式 | 安装 | 服务器命令 | 客户端命令 |\n|---------------|------|---------|----------------|----------------|\n| 标准数字PDF | 快速（默认） | `pip install opendataloader-pdf` | 无需额外操作 | `opendataloader-pdf file1.pdf file2.pdf folder\u002F` |\n| 复杂或嵌套表格 | **混合模式** | `pip install \"opendataloader-pdf[hybrid]\"` | `opendataloader-pdf-hybrid --port 5002` | `opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder\u002F` |\n| 扫描或基于图像的PDF | 混合模式+OCR | `pip install \"opendataloader-pdf[hybrid]\"` | `opendataloader-pdf-hybrid --port 5002 --force-ocr` | `opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder\u002F` |\n| 非英语扫描PDF | 混合模式+OCR | `pip install \"opendataloader-pdf[hybrid]\"` | `opendataloader-pdf-hybrid --port 5002 --force-ocr --ocr-lang \"ko,en\"` | `opendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder\u002F` |\n| 数学公式 | 混合模式+公式 | `pip install \"opendataloader-pdf[hybrid]\"` | `opendataloader-pdf-hybrid --enrich-formula` | `opendataloader-pdf --hybrid docling-fast --hybrid-mode full file1.pdf file2.pdf folder\u002F` |\n| 需要描述的图表 | 混合模式+图片 | `pip install \"opendataloader-pdf[hybrid]\"` | `opendataloader-pdf-hybrid --enrich-picture-description` | `opendataloader-pdf --hybrid docling-fast --hybrid-mode full file1.pdf file2.pdf folder\u002F` |\n| 未标记且需提升可访问性的PDF | 自动标签→生成标签化PDF | 预计2026年第二季度推出 | — | — |\n\n## 快速入门\n\n### Python\n\n```bash\npip install -U opendataloader-pdf\n```\n\n```python\nimport opendataloader_pdf\n\n# 批量处理所有文件只需一次调用——每次convert()都会启动一个JVM进程，因此重复调用会很慢\nopendataloader_pdf.convert(\n    input_path=[\"file1.pdf\", \"file2.pdf\", \"folder\u002F\"],\n    output_dir=\"output\u002F\",\n    format=\"markdown,json\"\n)\n```\n\n### Node.js\n\n```bash\nnpm install @opendataloader\u002Fpdf\n```\n\n```typescript\nimport { convert } from '@opendataloader\u002Fpdf';\n\nawait convert(['file1.pdf', 'file2.pdf', 'folder\u002F'], {\n  outputDir: 'output\u002F',\n  format: 'markdown,json'\n});\n```\n\n### Java\n\n```xml\n\u003Cdependency>\n  \u003CgroupId>org.opendataloader\u003C\u002FgroupId>\n  \u003CartifactId>opendataloader-pdf-core\u003C\u002FartifactId>\n\u003C\u002Fdependency>\n```\n\n[Python快速入门](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fquick-start-python) | [Node.js快速入门](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fquick-start-nodejs) | [Java快速入门](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fquick-start-java)\n\n## 混合模式：复杂PDF提取准确度第一\n\n混合模式结合了快速的本地Java处理与AI后端。简单页面保留在本地处理（0.02秒）；复杂页面则路由到AI以实现超过90%的表格提取准确度。\n\n```bash\npip install -U \"opendataloader-pdf[hybrid]\"\n```\n\n**终端1**——启动后端服务器：\n\n```bash\nopendataloader-pdf-hybrid --port 5002\n```\n\n**终端2**——处理PDF文件：\n\n```bash\n# 批量处理所有文件只需一次调用——每次调用都会启动一个JVM进程，因此重复调用会很慢\nopendataloader-pdf --hybrid docling-fast file1.pdf file2.pdf folder\u002F\n```\n\n**Python：**\n\n```python\n# 批量处理所有文件只需一次调用——每次convert()都会启动一个JVM进程，因此重复调用会很慢\nopendataloader_pdf.convert(\n    input_path=[\"file1.pdf\", \"file2.pdf\", \"folder\u002F\"],\n    output_dir=\"output\u002F\",\n    hybrid=\"docling-fast\"\n)\n```\n\n### 扫描PDF的OCR\n\n对于没有可选文本的基于图像的PDF，请使用`--force-ocr`选项启动后端：\n\n```bash\nopendataloader-pdf-hybrid --port 5002 --force-ocr\n```\n\n对于非英语文档，需指定语言：\n\n```bash\nopendataloader-pdf-hybrid --port 5002 --force-ocr --ocr-lang \"ko,en\"\n```\n\n支持的语言包括：英语、韩语、日语、简体中文、繁体中文、德语、法语、阿拉伯语等。\n\n### 公式提取（LaTeX）\n\n从科学PDF中提取数学公式并以LaTeX格式输出：\n\n```bash\n# 服务器端启用公式增强功能\nopendataloader-pdf-hybrid --enrich-formula\n\n# 一次性批量处理所有文件 — 每次调用都会启动一个 JVM 进程，因此重复调用会很慢\nopendataloader-pdf --hybrid docling-fast --hybrid-mode full file1.pdf file2.pdf folder\u002F\n```\n\n输出为 JSON 格式：\n```json\n{\n  \"type\": \"formula\",\n  \"page number\": 1,\n  \"bounding box\": [226.2, 144.7, 377.1, 168.7],\n  \"content\": \"\\\\frac{f(x+h) - f(x)}{h}\"\n}\n```\n\n> **注意**：公式和图片描述增强功能需要在客户端使用 `--hybrid-mode full`。\n\n### 图表与图片描述\n\n为图表和图片生成 AI 描述 — 对 RAG 搜索和辅助性替代文本非常有用：\n\n```bash\n# 服务器端\nopendataloader-pdf-hybrid --enrich-picture-description\n\n# 一次性批量处理所有文件 — 每次调用都会启动一个 JVM 进程，因此重复调用会很慢\nopendataloader-pdf --hybrid docling-fast --hybrid-mode full file1.pdf file2.pdf folder\u002F\n```\n\n输出为 JSON 格式：\n```json\n{\n  \"type\": \"picture\",\n  \"page number\": 1,\n  \"bounding box\": [72.0, 400.0, 540.0, 650.0],\n  \"description\": \"一个条形图，显示从 2016 年到 2030 年各地区的废弃物产生情况……\"\n}\n```\n\n> 使用 SmolVLM（256M），这是一种轻量级视觉模型。可通过 `--picture-description-prompt` 支持自定义提示。\n\n### Hancom 数据加载器集成 — 即将推出\n\n通过 [Hancom 数据加载器](https:\u002F\u002Fsdk.hancom.com\u002Fen\u002Fservices\u002F1?utm_source=github&utm_medium=readme&utm_campaign=opendataloader-pdf) 实现企业级 AI 文档分析 — 客户可基于其领域特定文档训练自定义模型。支持 30 多种元素类型（表格、图表、公式、标题、脚注等），基于 VLM 的图像\u002F图表理解，复杂表格提取（合并单元格、嵌套表格），针对扫描文档的 SLA 保障 OCR，以及原生 HWP\u002FHWPX 支持。支持 PDF、DOCX、XLSX、PPTX、HWP、PNG、JPG 等格式。[在线演示](https:\u002F\u002Flivedemo.sdk.hancom.com\u002Fen\u002Fdataloader?utm_source=github&utm_medium=readme&utm_campaign=opendataloader-pdf)\n\n[混合模式指南](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fhybrid-mode)\n\n## 输出格式\n\n| 格式 | 使用场景 |\n|--------|----------|\n| **JSON** | 带有边界框和语义类型的结构化数据 |\n| **Markdown** | 用于 LLM 上下文和 RAG 分块的纯文本 |\n| **HTML** | 带样式的网页展示 |\n| **带标注的 PDF** | 可视化调试 — 查看检测到的结构（[示例](https:\u002F\u002Fopendataloader.org\u002Fdemo\u002Fsamples\u002F01030000000000)) |\n| **文本** | 纯文本提取 |\n\n组合格式：`format=\"json,markdown\"`\n\n### JSON 输出示例\n\n```json\n{\n  \"type\": \"heading\",\n  \"id\": 42,\n  \"level\": \"Title\",\n  \"page number\": 1,\n  \"bounding box\": [72.0, 700.0, 540.0, 730.0],\n  \"heading level\": 1,\n  \"font\": \"Helvetica-Bold\",\n  \"font size\": 24.0,\n  \"text color\": \"[0.0]\",\n  \"content\": \"引言\"\n}\n```\n\n| 字段 | 描述 |\n|-------|-------------|\n| `type` | 元素类型：标题、段落、表格、列表、图片、标题、公式 |\n| `id` | 用于交叉引用的唯一标识符 |\n| `page number` | 以 1 为起始的页码参考 |\n| `bounding box` | `[left, bottom, right, top]`，单位为 PDF 点（72pt = 1 英寸） |\n| `heading level` | 标题深度（1+） |\n| `content` | 提取的文本 |\n\n[完整 JSON 模式](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fjson-schema)\n\n## 高级功能\n\n### 标记 PDF 支持\n\n当 PDF 包含结构标记时，OpenDataLoader 会提取作者原本设计的 **精确布局** — 不需猜测或启发式方法。标题、列表、表格和阅读顺序都将保留自源文件。\n\n```python\n# 一次性批量处理所有文件 — 每次 convert() 调用都会启动一个 JVM 进程，因此重复调用会很慢\nopendataloader_pdf.convert(\n    input_path=[\"file1.pdf\", \"file2.pdf\", \"folder\u002F\"],\n    output_dir=\"output\u002F\",\n    use_struct_tree=True           # 使用原生 PDF 结构标记\n)\n```\n\n大多数 PDF 解析器完全忽略结构标记。[了解更多](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Ftagged-pdf)\n\n### AI 安全：提示注入防护\n\nPDF 文件可能包含隐藏的提示注入攻击。OpenDataLoader 会自动过滤：\n\n- 隐藏文本（透明字体、零尺寸字体）\n- 页面外内容\n- 可疑的不可见图层\n\n若要对敏感数据进行脱敏处理（如电子邮件、URL、电话号码 → 替换为占位符），请显式启用：\n\n```bash\n# 一次性批量处理所有文件 — 每次调用都会启动一个 JVM 进程，因此重复调用会很慢\nopendataloader-pdf file1.pdf file2.pdf folder\u002F --sanitize\n```\n\n[AI 安全指南](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fai-safety)\n\n### LangChain 集成\n\n```bash\npip install -U langchain-opendataloader-pdf\n```\n\n```python\nfrom langchain_opendataloader_pdf import OpenDataLoaderPDFLoader\n\nloader = OpenDataLoaderPDFLoader(\n    file_path=[\"file1.pdf\", \"file2.pdf\", \"folder\u002F\"],\n    format=\"text\"\n)\ndocuments = loader.load()\n```\n\n[LangChain 文档](https:\u002F\u002Fdocs.langchain.com\u002Foss\u002Fpython\u002Fintegrations\u002Fdocument_loaders\u002Fopendataloader_pdf) | [GitHub](https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Flangchain-opendataloader-pdf) | [PyPI](https:\u002F\u002Fpypi.org\u002Fproject\u002Flangchain-opendataloader-pdf\u002F)\n\n### 高级选项\n\n```python\n# 一次性批量处理所有文件 — 每次 convert() 调用都会启动一个 JVM 进程，因此重复调用会很慢\nopendataloader_pdf.convert(\n    input_path=[\"file1.pdf\", \"file2.pdf\", \"folder\u002F\"],\n    output_dir=\"output\u002F\",\n    format=\"json,markdown,pdf\",\n    image_output=\"embedded\",        \u002F\u002F \"off\"、\"embedded\"（Base64）或 \"external\"（默认）\n    image_format=\"jpeg\",            \u002F\u002F \"png\" 或 \"jpeg\"\n    use_struct_tree=True,           \u002F\u002F 使用原生 PDF 结构\n)\n```\n\n[完整 CLI 选项参考](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fcli-options-reference)\n\n## PDF 无障碍访问与 PDF\u002FUA 转换\n\n**问题**：数百万现有 PDF 文件缺乏结构标记，无法满足无障碍法规（EAA、ADA\u002F第 508 条、韩国数字包容法）。手动修复每份文档的成本为 50–200 美元，且难以规模化。\n\n**OpenDataLoader 的解决方案**：与 [PDF Association](https:\u002F\u002Fpdfa.org) 和 [Dual Lab](https:\u002F\u002Fduallab.com)（[veraPDF](https:\u002F\u002Fverapdf.org) 的开发者，行业标准的开源 PDF\u002FA 和 PDF\u002FUA 验证工具）合作开发。自动标记遵循 [Well-Tagged PDF 规范](https:\u002F\u002Fpdfa.org\u002Fresource\u002Fwell-tagged-pdf\u002F)，并通过 veraPDF 进行程序化验证 — 自动检查 PDF 无障碍标准，而非人工审核。目前尚无任何开源工具能够端到端生成标记 PDF — 大多数依赖专有 SDK 完成标记写入步骤。而 OpenDataLoader 则在 Apache 2.0 许可下实现了全流程。（[合作详情](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Ftagged-pdf-collaboration)）\n\n| 法规 | 截止日期 | 要求 |\n|------------|----------|-------------|\n| **欧洲无障碍法案 (EAA)** | 2025 年 6 月 28 日 | 欧盟范围内可访问的数字产品 |\n| **ADA 与第 508 条** | 已生效 | 美国联邦机构和公共场所 |\n| **数字包容法** | 已生效 | 韩国数字服务的可访问性 |\n\n### 標準與驗證\n\n| 方面 | 詳細 |\n|--------|--------|\n| **規範** | PDF協會的[良好標記的PDF](https:\u002F\u002Fpdfa.org\u002Fresource\u002Fwell-tagged-pdf\u002F) |\n| **驗證** | [veraPDF](https:\u002F\u002Fverapdf.org) — 行業標準的開源PDF\u002FA及PDF\u002FUA驗證工具 |\n| **合作** | PDF協會 + [Dual Lab](https:\u002F\u002Fduallab.com)（veraPDF開發者）共同開發標記與驗證功能 |\n| **許可證** | 自動標記 → 標記PDF：Apache 2.0（免費）。PDF\u002FUA匯出：企業版 |\n\n### 可訪問性流程\n\n| 步驟 | 功能 | 狀態 | 等級 |\n|------|---------|--------|------|\n| 1. **審計** | 讀取現有PDF標記，檢測未標記的PDF | 已推出 | 免費 |\n| 2. **自動標記 → 標記PDF** | 為未標記的PDF生成結構標記 | 2026年第二季即將推出 | 免費（Apache 2.0） |\n| 3. **匯出PDF\u002FUA** | 轉換為符合PDF\u002FUA-1或PDF\u002FUA-2標準的檔案 | 💼 可用 | 企業版 |\n| 4. **視覺編輯** | 可訪問性工作室 — 審查並修復標記 | 💼 可用 | 企業版 |\n\n> **💼 企業版功能** 可根據需求提供。請聯絡我們 ([聯繫我們](https:\u002F\u002Fopendataloader.org\u002Fcontact)) 開始使用。\n\n### 自動標記預覽（2026年第二季即將推出）\n\n```python\n# API形狀預覽 — 2026年第二季可用\nopendataloader_pdf.convert(\n    input_path=[\"file1.pdf\", \"file2.pdf\", \"folder\u002F\"],\n    output_dir=\"output\u002F\",\n    auto_tag=True                   # 為未標記的PDF生成結構標記\n)\n```\n\n### 端到端合規工作流程\n\n```\n現有PDF（未標記）\n    │\n    ▼\n┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐\n│  1. 審計       │───>│  2. 自動標記    │───>│  3. 匯出       │───>│  4. 工作室       │\n│  （檢查標記）   │    │  （→ 標記PDF） │    │  （PDF\u002FUA）        │    │  （視覺編輯器） │\n└─────────────────┘    └─────────────────┘    └─────────────────┘    └─────────────────┘\n        │                      │                      │                      │\n        ▼                      ▼                      ▼                      ▼\n  use_struct_tree         auto_tag              PDF\u002FUA匯出       可訪問性工作室\n  （現已可用）    （2026年第二季，Apache 2.0）    （企業版）          （企業版）\n```\n\n[PDF可訪問性指南](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Faccessibility-compliance)\n\n## 路線圖\n\n| 功能 | 時程 | 等級 |\n|---------|----------|------|\n| **自動標記 → 標記PDF** — 從未標記的PDF生成標記PDF | 2026年第二季 | 免費 |\n| **[Hancom資料加載器](https:\u002F\u002Fsdk.hancom.com\u002Fen\u002Fservices\u002F1?utm_source=github&utm_medium=readme&utm_campaign=opendataloader-pdf)** — 企業級AI文檔分析、客戶自定義模型、基於VLM的圖表\u002F影像理解、生產級OCR | 2026年第二至第三季 | 計劃中 |\n| **結構驗證** — 驗證PDF標記樹 | 2026年第二季 | 計劃中 |\n\n[完整路線圖](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fupcoming-roadmap)\n\n## 常見問題\n\n### 對於RAG來說，最好的PDF解析器是什麼？\n\n對於RAG管道，你需要一個能保留文檔結構、維持正確閱讀順序，並提供元素坐標以供引用的解析器。OpenDataLoader正是為此設計——它輸出帶有邊界框的結構化JSON，能處理多欄佈局並採用XY-Cut++技術，且可在本地運行而無需GPU。在混合模式下，它在基準測試中總體排名第一（0.907）。\n\n### 最佳的開源PDF解析器是什麼？\n\nOpenDataLoader PDF是唯一結合以下特點的開源解析器：基於規則的確定性提取（無需GPU）、每個元素的邊界框、XY-Cut++閱讀順序、內建AI安全過濾器、原生標記PDF支持，以及用於複雜文檔的混合AI模式。它在整體準確率上排名第一（0.907），同時可在CPU上本地運行。\n\n### 如何從PDF中提取表格以供LLM使用？\n\nOpenDataLoader通過邊界分析和文本聚類來檢測表格，並保持行\u002F列結構。對於複雜表格，啟用混合模式可將準確率提升超過90%（TEDS分數從0.489提高到0.928）：\n\n```python\n# 批量處理所有文件一次調用 — 每次convert()都會啟動一個JVM進程，因此重複調用會很慢\nopendataloader_pdf.convert(\n    input_path=[\"file1.pdf\", \"file2.pdf\", \"folder\u002F\"],\n    output_dir=\"output\u002F\",\n    format=\"json\",\n    hybrid=\"docling-fast\"           # 用於複雜表格\n)\n```\n\n### 它與docling、marker或pymupdf4llm相比如何？\n\nOpenDataLoader [混合]模式在閱讀順序、表格和標題準確性方面總體排名第一（0.907）。主要差異如下：docling（0.882）表現強勁，但缺乏邊界框和AI安全過濾器；marker（0.861）需要GPU，且速度慢1000倍（53.932秒\u002F頁）；pymupdf4llm（0.732）速度快，但表格（0.401）和標題（0.412）準確性較差。OpenDataLoader是唯一一款結合確定性本地提取、每個元素的邊界框，以及內建提示注入防護的解析器。詳見[完整基準測試](https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-bench)。\n\n### 我可以在不將數據傳送到雲端的情況下使用它嗎？\n\n可以。OpenDataLoader完全在本地運行。無需API調用，也無數據傳輸——您的文檔永遠不會離開您的環境。混合模式的後端也在您自己的機器上運行。非常適合法律、醫療保健和金融文檔。\n\n### 它是否支援掃描PDF的OCR？\n\n是的，通過混合模式實現。安裝時使用`pip install \"opendataloader-pdf[hybrid]\"`，啟動後端時加上`--force-ocr`，然後照常處理即可。支援多種語言，包括韓語、日語、中文、阿拉伯語等，可通過`--ocr-lang`指定。\n\n### 它適用於韓語、日語或中文文檔嗎？\n\n是的。對於數字PDF，文本提取可直接使用。對於掃描PDF，請使用混合模式並搭配`--force-ocr --ocr-lang \"ko,en\"`（或`ja`、`ch_sim`、`ch_tra`）。即將推出的[Hancom資料加載器](https:\u002F\u002Fsdk.hancom.com\u002Fen\u002Fservices\u002F1?utm_source=github&utm_medium=readme&utm_campaign=opendataloader-pdf)整合——企業級AI文檔分析，內建生產級OCR，並根據您的特定文檔類型和工作流程優化客戶自定義模型。\n\n### 它的速度如何？\n\n本地模式在CPU上每秒可處理60頁以上（0.02秒\u002F頁）。混合模式每秒可處理2頁以上（0.46秒\u002F頁），對複雜文檔的準確性顯著更高。無需GPU。已在Apple M4上進行了基準測試。[完整基準測試詳情](https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-bench)。透過多進程批量處理，在8核心以上的機器上，吞吐量可超過每秒100頁。\n\n### 它能否處理多欄佈局？\n\n是的。OpenDataLoader使用XY-Cut++閱讀順序分析技術，可正確地排列跨多欄頁面、側欄及混合佈局中的文字順序。這在本地模式和混合模式下均有效，無需任何配置。\n\n### 什么是混合模式？\n\n混合模式将快速的本地 Java 处理与 AI 后端相结合。简单的页面会在本地处理（0.02 秒\u002F页）；而复杂页面（表格、扫描内容、公式、图表）则会自动路由到 AI 后端，以获得更高的准确性。后端在您的本地机器上运行——无需云端支持。请参阅[我应该使用哪种模式？](#which-mode-should-i-use)和[混合模式指南](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fhybrid-mode)。\n\n### 它能与 LangChain 配合使用吗？\n\n是的。安装 `langchain-opendataloader-pdf` 即可实现官方的 LangChain 文档加载器集成。详情请参阅 [LangChain 文档](https:\u002F\u002Fdocs.langchain.com\u002Foss\u002Fpython\u002Fintegrations\u002Fdocument_loaders\u002Fopendataloader_pdf)。\n\n### 如何为 RAG 切分 PDF？\n\nOpenDataLoader 输出保留标题、表格和列表的结构化 Markdown——这是语义切分的理想输入。JSON 输出中的每个元素都包含 `type`、`heading level` 和 `page number`，因此您可以按章节或页边界进行分割。对于大多数 RAG 流水线：使用 `format=\"markdown\"` 解析以获取文本块，或者在需要元素级控制时使用 `format=\"json\"`。配合 LangChain 的 `RecursiveCharacterTextSplitter` 或您自己的基于标题的切分器，可以获得最佳效果。\n\n### 如何在 RAG 回答中引用 PDF 来源？\n\nJSON 输出中的每个元素都包含一个边界框（以 PDF 点表示的 `[left, bottom, right, top]`）和页码。当您的 RAG 流水线返回答案时，可以将来源块映射回其边界框，以高亮显示原始 PDF 中的确切位置。这样就能实现“点击即溯源”的用户体验——用户可以看到答案来自哪一段落、表格或图表。目前没有其他开源解析器默认为每个元素提供边界框。\n\n### 如何将 PDF 转换为 LLM 可用的 Markdown？\n\n```python\nimport opendataloader_pdf\n\n# 批量处理所有文件只需一次调用——每次调用都会启动一个 JVM 进程，因此重复调用会很慢\nopendataloader_pdf.convert(\n    input_path=[\"file1.pdf\", \"file2.pdf\", \"folder\u002F\"],\n    output_dir=\"output\u002F\",\n    format=\"markdown\"\n)\n```\n\nOpenDataLoader 在 Markdown 输出中保留了标题层级、表格结构和阅读顺序。对于包含无边框表格或扫描页面的复杂文档，请使用混合模式（`hybrid=\"docling-fast\"`），以获得更高的准确性。输出结果足够干净，可以直接输入到 LLM 的上下文窗口或 RAG 切分流水线中。\n\n### 是否有自动化的 PDF 无障碍修复工具？\n\n是的。OpenDataLoader 是首个端到端自动化 PDF 无障碍修复的开源工具。该工具与 [PDF Association](https:\u002F\u002Fpdfa.org) 和 [Dual Lab](https:\u002F\u002Fduallab.com)（veraPDF 开发者）合作开发，自动标记功能遵循 Well-Tagged PDF 规范，并通过 veraPDF 进行程序化验证。布局分析引擎能够检测文档结构（标题、表格、列表、阅读顺序），并自动生成无障碍标签。自动标记功能将于 2026 年第二季度推出，在 Apache 2.0 许可下免费提供，不依赖任何专有 SDK。对于需要完全符合 PDF\u002FUA 标准的组织，企业版附加组件提供了 PDF\u002FUA 导出和可视化标签编辑器功能。这将取代通常每份文档成本达 50–200+ 美元的手动修复流程。\n\n### 这真的是首个开源的 PDF 自动标记工具吗？\n\n是的。现有的工具要么依赖专有 SDK 来写入结构标签，要么只输出非 PDF 格式（例如，Docling 输出 Markdown\u002FJSON，但无法生成 Tagged PDF），或者需要人工干预。OpenDataLoader 是首个在完全开源许可（Apache 2.0）下完成布局分析→标签生成→Tagged PDF 输出的工具，且没有任何专有依赖。自动标记功能遵循 PDF Association 的 Well-Tagged PDF 规范，并通过行业参考级的开源 PDF\u002FA 和 PDF\u002FUA 验证工具 veraPDF 进行验证。\n\n### 如何将现有 PDF 转换为 PDF\u002FUA？\n\nOpenDataLoader 提供了一个端到端的流程：先审计现有 PDF 是否包含标签（`use_struct_tree=True`），然后自动将未标记的 PDF 转换为 Tagged PDF（2026 年第二季度，Apache 2.0 许可下免费提供），最后导出为 PDF\u002FUA-1 或 PDF\u002FUA-2（企业版附加组件）。自动标记功能遵循 PDF Association 的 Well-Tagged PDF 规范，并通过 veraPDF 进行验证。自动标记生成的是 Tagged PDF；PDF\u002FUA 导出则是最后一步。如需企业级集成，请[联系我们](https:\u002F\u002Fopendataloader.org\u002Fcontact)。\n\n### 如何使我的 PDF 符合 EAA 合规要求？\n\n《欧洲无障碍法案》要求数字产品在 2025 年 6 月 28 日前达到无障碍标准。OpenDataLoader 支持完整的修复流程：审计→自动标记→Tagged PDF→PDF\u002FUA 导出。自动标记功能遵循 PDF Association 的 Well-Tagged PDF 规范，并通过 veraPDF 进行验证，确保输出符合标准。自动标记至 Tagged PDF 的功能将于 2026 年第二季度以 Apache 2.0 许可开源。PDF\u002FUA 导出和无障碍工作室是企业版附加组件。请参阅我们的[无障碍合规指南](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Faccessibility-compliance)。\n\n### OpenDataLoader PDF 是免费的吗？\n\n核心库采用 **Apache 2.0 开源许可**——可供商业用途免费使用。这包括所有提取功能（文本、表格、图片、OCR、公式、图表，通过混合模式实现）、AI 安全过滤器、Tagged PDF 支持以及自动标记至 Tagged PDF（2026 年第二季度）。我们致力于保持核心无障碍修复流程（布局分析→自动标记→Tagged PDF）的免费和开源特性。企业版附加组件（PDF\u002FUA 导出、无障碍工作室）适用于需要端到端法规合规的组织。\n\n### 为什么许可证从 MPL 2.0 更改为 Apache 2.0 ？\n\nMPL 2.0 要求文件级别的 copyleft，这往往会在企业采用前触发法律审查。而 Apache 2.0 则完全宽松——没有 copyleft 义务，更容易集成到商业项目中。如果您正在使用 2.0 版本之前的版本，它仍然受 MPL 2.0 许可约束，您可以继续使用。升级到 2.0 及以上版本意味着您的项目将遵循 Apache 2.0 许可条款，该条款更为宽松——您无需承担额外义务，也无需采取任何行动。\n\n## 文档\n\n- [Python 快速入门](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fquick-start-python)\n- [Node.js 快速入门](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fquick-start-nodejs)\n- [Java 快速入门](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fquick-start-java)\n- [JSON Schema 参考](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fjson-schema)\n- [CLI 选项参考](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fcli-options-reference)\n- [混合模式指南](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fhybrid-mode)\n- [Tagged PDF 支持](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Ftagged-pdf)\n- [AI 安全功能](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Fai-safety)\n- [PDF 无障碍](https:\u002F\u002Fopendataloader.org\u002Fdocs\u002Faccessibility-compliance)\n\n## 贡献\n\n我们欢迎贡献！请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 获取相关指南。\n\n## 许可证\n\n[Apache 2.0 许可证](LICENSE)\n\n> **注意：** 2.0 版本之前的版本采用 [Mozilla 公共许可证 2.0](https:\u002F\u002Fwww.mozilla.org\u002FMPL\u002F2.0\u002F) 许可。\n\n---\n\n**觉得有用吗？** 请给项目点个星，帮助更多人发现 OpenDataLoader。","# OpenDataLoader PDF 快速上手指南\n\nOpenDataLoader PDF 是一款专为 AI 数据提取和 PDF 无障碍自动化设计的开源解析器。它能将 PDF 转换为 Markdown、JSON（含边界框）、HTML 及带标签的 PDF，在混合模式下拥有业界领先的提取准确率，是构建 RAG（检索增强生成）流水线的理想工具。\n\n## 1. 环境准备\n\n在开始之前，请确保您的系统满足以下要求：\n\n*   **操作系统**：Windows, macOS, 或 Linux\n*   **Java 运行时**：必须安装 **Java 11** 或更高版本。\n    *   检查版本：终端运行 `java -version`\n    *   若未安装，推荐从 [Adoptium](https:\u002F\u002Fadoptium.net\u002F) 下载 JDK 11+。\n*   **Python 环境**：建议使用 **Python 3.10** 或更高版本（本指南以 Python 为例，同时也支持 Node.js 和 Java）。\n\n> **国内开发者提示**：如果访问 PyPI 源速度较慢，建议在安装时指定国内镜像源（如清华源或阿里源）。\n\n## 2. 安装步骤\n\n### 基础安装（适用于标准数字 PDF）\n适用于大多数包含文本层的数字 PDF 文件，速度快且无需额外依赖。\n\n```bash\npip install -U opendataloader-pdf\n# 国内加速方案：\n# pip install -U opendataloader-pdf -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n### 混合模式安装（适用于复杂\u002F扫描版 PDF）\n如果您需要处理**扫描件（OCR）**、**复杂表格**、**数学公式**或**图表描述**，请安装混合模式版本。此模式结合了本地处理与 AI 后端能力。\n\n```bash\npip install \"opendataloader-pdf[hybrid]\"\n# 国内加速方案：\n# pip install \"opendataloader-pdf[hybrid]\" -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n```\n\n## 3. 基本使用\n\n以下是最简单的 Python 使用示例，可将单个文件、多个文件或整个文件夹批量转换为结构化数据。\n\n### 代码示例\n\n```python\nimport opendataloader_pdf\n\n# 批量转换：支持传入文件列表或文件夹路径\n# 注意：每次调用 convert() 都会启动一个 JVM 进程，建议一次性传入所有文件以避免重复启动开销\nopendataloader_pdf.convert(\n    input_path=[\"file1.pdf\", \"file2.pdf\", \"folder\u002F\"],  # 输入路径\n    output_dir=\"output\u002F\",                              # 输出目录\n    format=\"markdown,json\"                             # 输出格式：Markdown 用于分块，JSON 含边界框用于引用\n)\n```\n\n### 进阶场景：启用混合模式\n若需处理高难度文档（如扫描件或复杂表格），需先启动后端服务，再在客户端调用。\n\n**终端 1：启动混合模式后端服务**\n```bash\nopendataloader-pdf-hybrid --port 5002\n```\n\n**终端 2：运行转换脚本**\n```python\nimport opendataloader_pdf\n\nopendataloader_pdf.convert(\n    input_path=[\"scanned_doc.pdf\"],\n    output_dir=\"output\u002F\",\n    format=\"markdown,json\",\n    hybrid=True  # 启用混合模式\n)\n```\n\n### 输出说明\n执行成功后，`output\u002F` 目录下将生成：\n*   **Markdown (.md)**：保留标题层级和阅读顺序，适合直接喂给 LLM。\n*   **JSON (.json)**：包含每个元素（文本、表格、图片）的语义类型及精确的边界框坐标 (Bounding Boxes)，适合做来源溯源。","某金融科技公司正构建基于大模型的智能投研系统，需要将数千份包含复杂表格和双栏排版的上市公司年报 PDF 转化为高质量的 RAG（检索增强生成）数据。\n\n### 没有 opendataloader-pdf 时\n- **数据结构混乱**：传统解析器无法识别多栏排版逻辑，导致跨栏文字顺序错乱，LLM 生成的摘要经常张冠李戴。\n- **关键信息丢失**：财报中的无边框表格和数学公式被还原为纯文本，行列关系彻底断裂，模型无法进行准确的数据分析。\n- **人工成本高昂**：处理扫描版旧文档需单独配置 OCR 流程，且后期需人工花费数小时校对和修复格式错误。\n- **溯源困难**：缺乏元素级的坐标定位数据，当模型回答出错时，开发人员无法快速回溯到原始 PDF 的具体位置进行验证。\n\n### 使用 opendataloader-pdf 后\n- **阅读顺序精准**：利用 XY-Cut++ 算法自动识别双栏与复杂布局，输出的 Markdown 段落逻辑清晰，直接提升 RAG 检索命中率。\n- **复杂元素结构化**：混合模式（Hybrid Mode）完美还原无边框表格结构与 LaTeX 公式，甚至能为图表生成 AI 描述，确保数据完整性。\n- **流程自动化闭环**：内置支持 80+ 语言的 OCR 功能，一行代码即可处理低质量扫描件，将单页处理时间压缩至 0.015 秒。\n- **精确溯源引用**：输出的 JSON 包含每个元素的边界框（Bounding Boxes），让系统能精准高亮原文依据，大幅增强回答的可信度。\n\nopendataloader-pdf 通过业界领先的解析精度和端到端的自动化能力，将非结构化 PDF 瞬间转化为大模型可直接理解的高质量数据资产。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002Fopendataloader-project_opendataloader-pdf_b5931796.png","opendataloader-project","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002Fopendataloader-project_61c303c6.png","",null,"open.dataloader@hancom.com","https:\u002F\u002Fopendataloader.org","https:\u002F\u002Fgithub.com\u002Fopendataloader-project",[81,85,89,93,97,101],{"name":82,"color":83,"percentage":84},"Java","#b07219",76.1,{"name":86,"color":87,"percentage":88},"MDX","#fcb32c",10.3,{"name":90,"color":91,"percentage":92},"Python","#3572A5",8.9,{"name":94,"color":95,"percentage":96},"JavaScript","#f1e05a",2.1,{"name":98,"color":99,"percentage":100},"TypeScript","#3178c6",1.9,{"name":102,"color":103,"percentage":104},"Shell","#89e051",0.7,16605,1445,"2026-04-14T10:32:49","Apache-2.0","未说明 (支持 Python\u002FNode.js\u002FJava 跨平台环境)","非必需 (GPU required: No)","未说明",{"notes":113,"python":114,"dependencies":115},"核心运行依赖 Java 11+ 环境，每次转换调用会启动一个 JVM 进程，因此建议批量处理文件以避免重复启动开销。混合模式（Hybrid Mode）用于处理复杂表格、扫描件或公式，需额外安装并启动后端服务。自动标签功能（Auto-tagging）预计于 2026 年第二季度发布。","3.10+",[116],"Java 11+",[15,13,14],[119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138],"json","markdown","pdf","ai","document-parsing","html","pdf-converter","tables","pdf-parser","rag","accessibility","bounding-box","eaa","ocr","pdf-accessibility","pdf-extraction","pdf-ua","tagged-pdf","ocr-recognition","a11y","2026-03-27T02:49:30.150509","2026-04-15T04:23:14.541164",[142,147,151,156,161,166],{"id":143,"question_zh":144,"answer_zh":145,"source_url":146},33569,"如何处理包含嵌入图片的 PDF 或当原生文本提取不完整时强制使用 OCR？","可以使用 `hybrid_ocr=\"force\"` 参数强制对所有页面进行全页 OCR。这适用于 PDF 中包含带文本的图片，或者原生文本提取结果不完整\u002F错误的情况。\n\nPython 用法示例：\n```python\nopendataloader_pdf.convert(\n    input_path=\"input.pdf\",\n    output_dir=\"output\",\n    hybrid=\"docling\",\n    hybrid_ocr=\"force\"  # 强制对所有页面进行 OCR\n)\n```\n\nCLI 用法示例：\n```bash\nopendataloader-pdf --hybrid docling --hybrid-ocr force input.pdf\n```\n\n可选模式包括：\n- `auto` (默认): 仅在需要的地方（如扫描页、图片）进行 OCR。\n- `force`: 强制对所有页面进行全页 OCR。","https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fissues\u002F151",{"id":148,"question_zh":149,"answer_zh":150,"source_url":146},33570,"如何在离线环境下配置模型下载或解决 SSL 证书问题？","由于 Docling 使用多个具有特定目录结构的模型，手动下载较为复杂。最可靠的解决方案是解决 SSL 证书问题。\n\n推荐步骤：\n1. **一次性在线下载**：在有网络的环境中运行一次混合服务器，模型会自动缓存到 `~\u002F.cache\u002Fhuggingface\u002F` 目录，之后即可离线使用。\n2. **替代网络方案**：如果当前环境无法配置 SSL，可尝试使用个人热点或 VPN 运行一次以完成缓存。\n3. **降级方案**：如果完全无法联网，可尝试不使用混合服务器模式（默认模式），但表格和布局检测的准确率可能会降低。\n\n更多细节可参考 Docling 官方资源。",{"id":152,"question_zh":153,"answer_zh":154,"source_url":155},33571,"PDF 中的表格数据出现数字截断或文本阅读顺序（如问答对）错误怎么办？","这些问题（表格数字截断和多栏阅读顺序错误）已在最新的主分支（main）代码中修复，并将包含在下一个发布版本中。\n\n- **表格数字截断**：之前被截断的行现在可以正确提取（例如 `0∼|∼|>` 已修复为 `0∼4|4∼6|> 6`）。\n- **阅读顺序**：多栏文档中的问答对现在能按正确的顺序输出。\n\n如果您遇到此问题，建议升级到最新版本或从源代码构建。已知遗留问题：相距较远的文本块若内部起止值接近仍可能被错误合并，该修复尚未合并到主分支。","https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fissues\u002F150",{"id":157,"question_zh":158,"answer_zh":159,"source_url":160},33572,"混合服务器（Hybrid Server）超时导致处理失败或显示不可用，如何解决？","默认情况下，混合服务器的超时时间可能过短（原默认 30 秒）。PR #337 已将默认的 `--hybrid-timeout` 更改为无限（0 = 无超时），这意味着服务器将等待处理完成，无论 CPU\u002FGPU 环境如何。\n\n如果您需要显式设置超时时间，可以使用以下参数：\n- CLI: `--hybrid-timeout \u003C毫秒数>`\n- Python: 在配置中设置相应的 timeout 参数。\n\n更新后，服务器不再因默认超时而中断长时间运行的任务。","https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fissues\u002F333",{"id":162,"question_zh":163,"answer_zh":164,"source_url":165},33573,"提取 Krutidev 编码的印地语文本时出现多余空格或字符乱序，如何修复？","该问题的根本原因是 veraPDF 的 `TextPieceComparator` 按 `endX` 而非 `startX` 排序，导致可变字形宽度的字体（如 Krutidev）字符重排。\n\n此问题已在 veraPDF v1.31.29+ 版本的上游修复中解决。opendataloader-pdf 的下一个版本将包含此修复。\n\n修复效果验证：\n- 修复前：`ykds lHkk d s ifz Ø;k...` (含多余空格和乱序)\n- 修复后：`yksd lHkk ds izfØ;k vkSj dk;Z lapkyu` (正常)\n\n建议升级软件版本以获取修复。","https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fissues\u002F324",{"id":167,"question_zh":168,"answer_zh":169,"source_url":160},33574,"如何处理越南语变音符号被错误拆分导致文本损坏的问题？","这是一个已知问题，Docling 可能会错误地在越南语变音符号间插入空格，导致严重的文本损坏。\n\n建议操作：\n1. 为此类特定语言问题单独提交一个新的 Issue，以便追踪。\n2. 在提交时，请提供能复现该问题的样本 PDF 文件。\n3. 或者将样本文件发送至 `open.dataloader@hancom.com` 供内部参考分析。\n\n维护团队需要具体样本才能针对性地调查和修复此类编码或分词问题。",[171,176,181,186,191,196,201,206,211,216,221,226,231,236,241,246,251,256,261,266],{"id":172,"version":173,"summary_zh":174,"released_at":175},255781,"v2.2.1","## 变更内容\n* 修复(hybrid)：添加 --device 标志，并修复 Apple Silicon 上误导性的 GPU 日志（#371），由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F374 中完成。\n* 修复(struct-tree)：当 use_struct_tree=True 时，渲染表格单元格文本，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F376 中完成。\n* 修复(node)：在 tsup 配置中添加 shims: true，以修复 CJS 构建问题，由 @debuggerpk 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F373 中完成。\n* 性能优化：限制 ListProcessor 中的反向扫描，以解决 O(n²) 的性能问题（约 50 倍加速），由 @brettatoms 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F369 中完成。\n* 修复(hybrid)：自动将大 PDF 分块，以防止后端挂起，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F382 中完成。\n* 修复：保留空白分块的位置，以恢复丢失的空格，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F383 中完成。\n\n## 新贡献者\n* @debuggerpk 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F373 中完成了首次贡献。\n* @brettatoms 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F369 中完成了首次贡献。\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fcompare\u002Fv2.2.0...v2.2.1","2026-04-03T09:07:51",{"id":177,"version":178,"summary_zh":179,"released_at":180},255782,"v2.2.0","## 变更内容\n* 性能优化：并行处理页面 — 速度提升6.5倍，在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F362 中击败了 @hnc-jglee 的 LiteParse\n* 修复：解决安全漏洞并更新所有依赖项，由 @bundolee 完成，详见 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F365\n* 修复（混合模式）：移除默认的100MB文件大小限制，由 @bundolee 完成，详见 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F366\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fcompare\u002Fv2.1.0...v2.2.0","2026-03-27T07:28:21",{"id":182,"version":183,"summary_zh":184,"released_at":185},255783,"v2.1.1","## 变更内容\n* 功能：新增 `--detect-strikethrough` 选项，用于检测删除线文本（#295），由 @hnc-jglee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F298 中实现。\n* 修复：在垂直间距检测中过滤窄异常元素，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F300 中实现。\n* 重构：对 StrikethroughProcessor 和 XYCutPlusPlusSorter 进行重构，由 @MaximPlusov 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F325 中完成。\n* 杂项：移除 Claude Code 的 GitHub 工作流，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F334 中完成。\n* 修复：在 Windows 上使用 asyncio 事件循环以避免 uvloop 错误，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F328 中实现。\n* 文档：修复 hybrid_timeout 类型及 hybrid_fallback 默认值，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F299 中完成。\n* 功能：检测 CID 字体提取失败并切换到 OCR 备用方案，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F291 中实现。\n* 修复：将 converter.convert() 放入线程池执行，以防止阻塞事件循环，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F322 中完成。\n* 更新过时的贡献说明，由 @JCZhang2025 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F306 中完成。\n* 文档：创建 whats-new-v2 文章，由 @bdoubrov 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F339 中完成。\n* 测试：清理过时的 TextProcessor 回归测试，由 @JCZhang2025 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F308 中完成。\n* 修复：当无剩余页面时跳过混合后端检查，由 @JCZhang2025 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F311 中完成。\n* 杂项：移除 LFS，并将基准测试移动至 opendataloader-bench，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F340 中完成。\n* 修复：为混合模式下的 HeadingProcessor 处理 null textColor，由 @justperson94 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F320 中完成。\n* 修复（表格）：对分割不足的电子表格进行规范化处理，由 @sickn33 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F338 中完成。\n* 修复：将混合模式超时默认值改为无限（0），由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F337 中完成。\n* 杂项：将 GitHub Actions 升级至兼容 Node 24 的版本，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F346 中完成。\n* 修复：在生成 Markdown 表格时处理合并单元格，由 @hnc-jglee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F342 中完成。\n* 为 whats-new-v2.mdx 添加双引号，由 @MaximPlusov 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F348 中完成。\n* 杂项：更新依赖项以修复安全漏洞，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F347 中完成。\n* 修复：将 PR #320 中的防御性 NPE 捕获替换为更合理的优雅降级处理。","2026-03-26T04:17:47",{"id":187,"version":188,"summary_zh":189,"released_at":190},255784,"v2.0.2","**完整更新日志**: https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fcompare\u002Fv2.0.1...v2.0.2","2026-03-18T08:51:44",{"id":192,"version":193,"summary_zh":194,"released_at":195},255785,"v2.0.1","## 变更内容\n* 添加许可证常见问题解答，由 @hnc-sujicho 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F276 中完成\n* 修复：将 hybrid_fallback 的默认值改为 false，以实现快速失败行为，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F280 中完成\n* 文档：在 README 标语中添加 PDF\u002FUA 关键词，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F281 中完成\n* 文档：为 Hancom SDK 链接添加 UTM 跟踪参数，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F283 中完成\n* 文档：将 Hancom SDK 链接更新为英文本地化版本，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F282 中完成\n* 文档：在 Hancom Data Loader 的描述中突出显示内置 OCR 功能，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F284 中完成\n* 文档：在 README 中添加带注释的 PDF 主图，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F285 中完成\n* 修复：在 CLIMain 中将处理失败传播为非零退出码，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F288 中完成\n* 杂项（Node）：更新开发依赖项，包括 vite 8，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F290 中完成\n* 文档：修复 Python 版本问题，并添加跨平台设置指南，由 @hnc-jglee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F293 中完成\n* 修复（测试）：为 TextChunks 测试添加 StreamInfo，以兼容 verapdf 1.31.8，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F296 中完成\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fcompare\u002Fv2.0.0...v2.0.1","2026-03-18T06:34:08",{"id":197,"version":198,"summary_zh":199,"released_at":200},255786,"v2.0.0","## 变更内容\n* 文档：由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F261 中修复设计文档中的 Docling 后端名称。\n* 文档：由 @StevenVincentOne 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F252 中澄清敏感数据占位符的行为。\n* 文档：由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F270 中在所有文档中添加批处理指南。\n* 杂项：为 v2.0 版本（OSS-220）将许可证从 MPL-2.0 更新为 Apache-2.0，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F272 中完成。\n* 文档：重写 README v2.0 — 面向地理信息优化、以可访问性为先，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F273 中完成。\n* 修复：默认禁用敏感数据过滤器，由 @SergioChan 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F265 中完成。\n* 功能：添加 --sanitize 选项，并将其与 --content-safety-off 分离，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F275 中实现。\n\n## 新贡献者\n* @StevenVincentOne 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F252 中完成了首次贡献。\n* @SergioChan 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F265 中完成了首次贡献。\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fcompare\u002Fv1.12.0...v2.0.0","2026-03-11T05:13:45",{"id":202,"version":203,"summary_zh":204,"released_at":205},255787,"v1.12.0","## 变更内容\n* 杂项：移除 Docker 镜像分发，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F260 中完成。\n\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fcompare\u002Fv1.11.3...v1.12.0","2026-03-06T02:49:05",{"id":207,"version":208,"summary_zh":209,"released_at":210},255788,"v1.11.3","## 变更内容\n* 文档：由 @hnc-leebd 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F230 中添加了阿拉伯语支持文档。\n* 文档：由 @hnc-jglee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F235 中向 CONTRIBUTING.md 添加了构建说明和基准测试要求。\n* 修复：在 JSON 输出中抑制 LineArtChunk（#244），由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F246 中完成。\n* 杂项：修复高严重性 minimatch ReDoS 漏洞并更新依赖项，由 @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F247 中完成。\n\n## 新贡献者\n* @bundolee 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F246 中完成了首次贡献。\n\n**完整变更日志**：https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fcompare\u002Fv1.11.2...v1.11.3","2026-03-04T08:02:34",{"id":212,"version":213,"summary_zh":214,"released_at":215},255789,"v1.11.2","## 变更内容\n* 文档：添加扫描PDF、图片\u002F图表指南以及模式选择指南，由 @hnc-leebd 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F228 中完成。\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fcompare\u002Fv1.11.1...v1.11.2","2026-02-26T14:52:01",{"id":217,"version":218,"summary_zh":219,"released_at":220},255790,"v1.11.1","## 变更内容\n* 文档：@hnc-leebd 在 https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F227 中对照实际代码库对文档进行了事实核查并修复了错误。\n\n\n**完整变更日志**: https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fcompare\u002Fv1.11.0...v1.11.1","2026-02-26T09:02:27",{"id":222,"version":223,"summary_zh":224,"released_at":225},255791,"v1.11.0","## What's Changed\n* feat(hybrid): add Hancom Document AI backend support by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F181\n* Add sensitive data filter by @LonelyMidoriya in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F152\n* Fix case when replacements could overlap each other by @LonelyMidoriya in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F187\n* Add spaces when sorting text chunks in text line by @LonelyMidoriya in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F190\n* fix: skip Claude Code Review workflow for fork PRs by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F186\n* fix: LangChain documentation link in README by @hnc-hyunheejo in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F192\n* Update verapdf version by @MaximPlusov in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F193\n* fix: add Unicode sanitization to hybrid server response by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F207\n* feat: add GPU detection logging to hybrid server startup by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F208\n* feat: support --replace-invalid-chars in hybrid-mode full by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F209\n* test: add regression tests for Korean CID font extraction by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F213\n* chore: update all npm and uv dependencies to latest by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F214\n* feat: publish hybrid server Docker image to GHCR by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F211\n* test: add regression tests for issue #150 text extraction bugs by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F219\n* fix: resolve minimatch ReDoS vulnerability by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F218\n* fix: prevent stack trace exposure in hybrid server by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F217\n* fix: handle Docling PARTIAL_SUCCESS and fallback failed pages to Java by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F216\n* fix: cap Markdown heading level to 1-6 per specification by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F223\n* fix: add upfront health check for hybrid server before processing by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F226\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fcompare\u002Fv1.10.1...v1.11.0","2026-02-26T08:17:37",{"id":227,"version":228,"summary_zh":229,"released_at":230},255792,"v1.10.1","## What's Changed\n* chore: update .gitignore for better coverage by @hnc-jglee in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F183\n* fix: prevent StackOverflowError in XYCutPlusPlusSorter by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F182\n* fix: add depth limit to TableBorderProcessor to prevent stack overflow by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F184\n\n## New Contributors\n* @hnc-jglee made their first contribution in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F183\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fcompare\u002Fv1.10.0...v1.10.1","2026-02-05T05:57:51",{"id":232,"version":233,"summary_zh":234,"released_at":235},255793,"v1.10.0","## What's Changed\n* feat(hybrid): add formula enrichment support with LaTeX extraction by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F164\n* feat(hybrid): add picture description support with SmolVLM by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F165\n* Fix incorrect content order by @LonelyMidoriya in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F169\n* security(java): update all dependencies to latest versions by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F172\n* security(python): update all dependencies to latest versions by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F170\n* Fix splitting of text chunks to different table cells by @MaximPlusov in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F168\n* Improve paragraph detection by @MaximPlusov in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F173\n* Join multiline heading into single line in Markdown by @LonelyMidoriya in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F175\n* Hybrid. Fix postprocessing by @MaximPlusov in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F176\n* feat: add --include-header-footer option for output generation by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F177\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fcompare\u002Fv1.9.1...v1.10.0","2026-02-04T01:57:47",{"id":237,"version":238,"summary_zh":239,"released_at":240},255794,"v1.9.1","**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fcompare\u002Fv1.9.0...v1.9.1","2026-01-22T02:21:45",{"id":242,"version":243,"summary_zh":244,"released_at":245},255795,"v1.9.0","## What's Changed\n* fix(hybrid): add OCR language settings to hybrid server by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F163\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fcompare\u002Fv1.8.2...v1.9.0","2026-01-22T01:51:48",{"id":247,"version":248,"summary_zh":249,"released_at":250},255796,"v1.8.2","**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fcompare\u002Fv1.8.1...v1.8.2","2026-01-20T02:28:54",{"id":252,"version":253,"summary_zh":254,"released_at":255},255797,"v1.8.1","**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fcompare\u002Fv1.8.0...v1.8.1","2026-01-20T02:04:09",{"id":257,"version":258,"summary_zh":259,"released_at":260},255798,"v1.8.0","## What's Changed\n* feat: add --hybrid-mode and --hybrid-ocr CLI options by @hnc-leebd in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F157\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fcompare\u002Fv1.7.2...v1.8.0","2026-01-20T01:30:02",{"id":262,"version":263,"summary_zh":264,"released_at":265},255799,"v1.7.2","## What's Changed\n* Add one space for empty cells in markdown by @LonelyMidoriya in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F153\n* Fix detection of Heading inside text block by @LonelyMidoriya in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F154\n* Disable caption detection for 'subtle' images by @LonelyMidoriya in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F158\n* Fix splitting of text chunks to different table cells by @MaximPlusov in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F159\n* Add checking for headings in list by @LonelyMidoriya in https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fpull\u002F160\n\n\n**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fcompare\u002Fv1.7.1...v1.7.2","2026-01-19T08:35:10",{"id":267,"version":268,"summary_zh":269,"released_at":270},255800,"v1.7.1","**Full Changelog**: https:\u002F\u002Fgithub.com\u002Fopendataloader-project\u002Fopendataloader-pdf\u002Fcompare\u002Fv1.7.0...v1.7.1","2026-01-08T11:29:52"]