Docling 可以轻松、快速地解析文档并将其导出为所需的格式。
特征
- 🗂️ 读取流行的文档格式(PDF、DOCX、PPTX、图像、HTML、AsciiDoc、Markdown)并导出为 Markdown 和 JSON
- 📑 高级 PDF 文档理解,包括页面布局、阅读顺序和表格结构
- 🧩 统一、富有表现力的DoclingDocument表示格式
- 🤖 轻松与 LlamaIndex 🦙 和 LangChain 🦜🔗 集成,打造强大的 RAG / QA 应用程序
- 🔍 支持扫描 PDF 的 OCR
- 💻 简单方便的 CLI
探索文档以发现大量示例并释放 Docling 的全部功能!
即将推出
- ♾️ 方程式和代码提取
- 📝 元数据提取,包括标题、作者、参考文献和语言
- 🦜🔗 原生 LangChain 扩展
安装
要使用 Docling,只需docling
从包管理器安装,例如 pip:
pip install docling
适用于 macOS、Linux 和 Windows 环境。x86_64 和 arm64 架构。
Docling 模型依赖于PyTorch库。根据您的架构,您可能需要使用不同的发行版torch
。例如,您可能需要支持不同的加速器或仅限 CPU 的版本。所有不同的安装方式都torch
列在其网站https://pytorch.org/上。
一种常见的情况是在仅支持 CPU 的 Linux 系统上安装。在这种情况下,我们建议使用以下选项安装 Docling
# Example for installing on the Linux cpu-only version
pip install docling --extra-index-url https://download.pytorch.org/whl/cpu
Docling 支持多种 OCR 引擎来处理扫描文档。当前版本提供以下引擎。
引擎 | 安装 | 用法 |
---|---|---|
简易OCR | Docling 中或通过 的默认设置pip install easyocr 。 | EasyOcrOptions |
立方体 | 系统依赖性。请参阅下面有关 Tesseract 和 Tesserocr 的描述。 | TesseractOcrOptions |
Tesseract 命令行界面 | 系统依赖性。请参阅下面的描述。 | TesseractCliOcrOptions |
DoclingDocumentConverter
允许使用设置来选择 OCR 引擎ocr_options
。例如
from docling.datamodel.base_models import ConversionStatus, PipelineOptions
from docling.datamodel.pipeline_options import PipelineOptions, EasyOcrOptions, TesseractOcrOptions
from docling.document_converter import DocumentConverter
pipeline_options = PipelineOptions()
pipeline_options.do_ocr = True
pipeline_options.ocr_options = TesseractOcrOptions() # Use Tesseract
doc_converter = DocumentConverter(
pipeline_options=pipeline_options,
)
Tesseract 安装
Tesseract是一款流行的 OCR 引擎,适用于大多数操作系统。要将此引擎与 Docling 一起使用,必须使用您选择的打包工具在您的系统上安装 Tesseract。下面我们提供示例命令。安装 Tesseract 后,您需要使用 TESSDATA_PREFIX
环境变量提供其语言文件的路径(请注意,它必须以斜线结尾/
)。macOS (通过Homebrew )基于 Debian红帽企业版
brew install tesseract leptonica pkg-config
TESSDATA_PREFIX=/opt/homebrew/share/tessdata/
echo "Set TESSDATA_PREFIX=${TESSDATA_PREFIX}"
链接到 Tesseract
Tesseract 库的最有效使用方式是通过链接。Docling 使用Tesserocr包来实现此目的。
如果您遇到 Tesserocr 的安装问题,我们建议使用以下安装选项:
pip uninstall tesserocr
pip install --no-binary :all: tesserocr
更详细的安装说明请参阅文档。
入门
要转换单个文档,请使用convert()
,例如:
from docling.document_converter import DocumentConverter
source = "https://arxiv.org/pdf/2408.09869" # document per local path or URL
converter = DocumentConverter()
result = converter.convert(source)
print(result.document.export_to_markdown()) # output: "## Docling Technical Report[...]"
分块
您可以按如下方式对 Docling 文档执行层次结构感知分块:
from docling.document_converter import DocumentConverter
from docling_core.transforms.chunker import HierarchicalChunker
conv_res = DocumentConverter().convert("https://arxiv.org/pdf/2206.01062")
doc = conv_res.document
chunks = list(HierarchicalChunker().chunk(doc))
print(chunks[30])
# {
# "text": "Lately, new types of ML models for document-layout analysis have emerged [...]",
# "meta": {
# "doc_items": [{
# "self_ref": "#/texts/40",
# "label": "text",
# "prov": [{
# "page_no": 2,
# "bbox": {"l": 317.06, "t": 325.81, "r": 559.18, "b": 239.97, ...},
# }]
# }],
# "headings": ["2 RELATED WORK"],
# }
# }
导出为 JSON、Markdown、Doctags
注意:Docling v2 中的所有render_...
方法ConversionResult
均已被删除,现在可以用以下DoclingDocument
方式获取:
DoclingDocument.export_to_dict
DoclingDocument.export_to_markdown
DoclingDocument.export_to_document_tokens
conv_result: ConversionResult = doc_converter.convert("https://arxiv.org/pdf/2408.09869") # previously `convert_single`
## Export to desired format:
print(json.dumps(conv_res.document.export_to_dict()))
print(conv_res.document.export_to_markdown())
print(conv_res.document.export_to_document_tokens())
注意:虽然已弃用,但您仍然可以导出 Docling v1 JSON 格式。这可以通过与类型相同的方法获得DoclingDocument
:
## Export legacy document representation to desired format, for v1 compatibility:
print(json.dumps(conv_res.legacy_document.export_to_dict()))
print(conv_res.legacy_document.export_to_markdown())
print(conv_res.legacy_document.export_to_document_tokens())
查看入门指南。您将发现许多调整选项,以利用所有高级功能。
获取帮助和支持
请随时通过讨论部分与我们联系。
技术报告
有关 Docling 内部工作原理的更多详细信息,请参阅Docling 技术报告。
贡献
请阅读对 Docling 的贡献以了解详情。
参考
如果您在项目中使用 Docling,请考虑引用以下内容:
@techreport{Docling, author = {Deep Search Team}, month = {8}, title = {Docling Technical Report}, url = {https://arxiv.org/abs/2408.09869}, eprint = {2408.09869}, doi = {10.48550/arXiv.2408.09869}, version = {1.0.0}, year = {2024} }