玩转文档处理,Docling 让一切变得简单

玩转文档处理,Docling 让一切变得简单

文章目录

玩转文档处理,Docling 让一切变得简单一、背景:为什么选择 Docling?二、Docling 是什么?三、如何安装 Docling?四、Docling 的核心函数及使用方法1\. `DocumentConverter.convert()`2\. `export_to_markdown()`3\. `export_to_json()`4\. `HierarchicalChunker.chunk()`5\. `PdfPipelineOptions`

五、Docling 的应用场景场景 1:将 PDF 转换为 Markdown场景 2:处理扫描版 PDF场景 3:限制文档处理大小场景 4:提取文档分块场景 5:与 LlamaIndex 集成

六、常见问题及解决方案问题 1:OCR 引擎未安装问题 2:PyTorch 安装问题问题 3:文档转换超时

七、总结

玩转文档处理,Docling 让一切变得简单

一、背景:为什么选择 Docling?

在日常工作中,我们常常需要处理各种格式的文档,如 PDF、Word、PPT、HTML,甚至是图片中的文字内容。这些文档格式繁多,处理起来往往需要不同的工具和技术,效率低下且容易出错。Docling 正是为了解决这一痛点而生。

Docling 是一个强大的 Python 第三方库,专注于文档处理和转换。它支持多种主流文档格式,包括 PDF、DOCX、PPTX、HTML、图片等,并能深度解析 PDF 的页面布局、阅读顺序和表格结构。此外,Docling 提供了统一的文档表示格式(DoclingDocument),可以方便地将文档导出为 Markdown、HTML 或 JSON 等格式。它还支持 OCR 功能,能够处理扫描版的 PDF 和图片。

更重要的是,Docling 无缝集成了 LlamaIndex 和 LangChain 等流行的人工智能框架,非常适合用于构建知识问答(QA)和检索增强生成(RAG)应用。接下来,我们将深入探索 Docling 的强大功能和使用方法。

二、Docling 是什么?

Docling 是一个开源的 Python 库,由 IBM 团队开发。它的目标是简化文档处理流程,支持多种文档格式的解析和转换,并提供与人工智能生态系统的无缝集成。Docling 提供了丰富的功能,包括但不限于:

支持多种文档格式的解析和转换。

深度解析 PDF 文档,包括页面布局、表格结构和阅读顺序。

提供统一的文档表示格式,便于后续处理。

支持多种导出格式,如 Markdown、HTML 和 JSON。

集成 OCR 功能,支持扫描文档的处理。

提供命令行工具(CLI),方便快速操作。

三、如何安装 Docling?

作为第三方库,Docling 可以通过 pip 命令轻松安装:

bash复制

pip install docling

此外,如果需要支持 CPU 版本的 PyTorch,可以使用以下命令:

bash复制

pip install docling --extra-index-url https://download.pytorch.org/whl/cpu

安装完成后,你就可以开始使用 Docling 的强大功能了。

四、Docling 的核心函数及使用方法

以下是 Docling 中常用的五个核心函数及其使用方法:

1. DocumentConverter.convert()

这是 Docling 中最核心的函数,用于将文档转换为 DoclingDocument 格式。

Python复制

from docling.document_converter import DocumentConverter

source = "path/to/your/document.pdf" # 或者使用在线文档的 URL

converter = DocumentConverter()

result = converter.convert(source)

第一行导入了 DocumentConverter 类。

source 是文档的路径或 URL。

converter.convert(source) 将文档转换为 DoclingDocument 格式,结果存储在 result 中。

2. export_to_markdown()

将 DoclingDocument 导出为 Markdown 格式。

Python复制

markdown_content = result.document.export_to_markdown()

print(markdown_content)

result.document.export_to_markdown() 将文档导出为 Markdown 格式。

输出的 Markdown 内容可以用于进一步的处理或存储。

3. export_to_json()

将 DoclingDocument 导出为 JSON 格式。

Python复制

json_content = result.document.export_to_json()

print(json_content)

result.document.export_to_json() 将文档导出为 JSON 格式。

JSON 格式便于与其他系统或工具集成。

4. HierarchicalChunker.chunk()

对文档进行分块操作。

Python复制

from docling_core.transforms.chunker import HierarchicalChunker

chunks = list(HierarchicalChunker().chunk(result.document))

print(chunks[0])

HierarchicalChunker().chunk(result.document) 将文档分块。

输出的分块内容包含文本和元数据,便于后续处理。

5. PdfPipelineOptions

自定义 PDF 处理选项。

Python复制

from docling.datamodel.pipeline_options import PdfPipelineOptions

pipeline_options = PdfPipelineOptions(do_table_structure=True)

converter = DocumentConverter(

format_options={"pdf": PdfPipelineOptions(pipeline_options=pipeline_options)}

)

PdfPipelineOptions 用于自定义 PDF 处理选项,例如是否解析表格结构。

这些选项可以通过 DocumentConverter 的参数传递。

五、Docling 的应用场景

以下是五个常见的使用场景及其代码示例:

场景 1:将 PDF 转换为 Markdown

Python复制

from docling.document_converter import DocumentConverter

source = "path/to/your/document.pdf"

converter = DocumentConverter()

result = converter.convert(source)

markdown_content = result.document.export_to_markdown()

print(markdown_content)

将 PDF 文件转换为 Markdown 格式,便于在 Markdown 编辑器中进一步处理。

场景 2:处理扫描版 PDF

Python复制

from docling.datamodel.pipeline_options import PipelineOptions, EasyOcrOptions

from docling.document_converter import DocumentConverter

pipeline_options = PipelineOptions()

pipeline_options.do_ocr = True

pipeline_options.ocr_options = EasyOcrOptions()

converter = DocumentConverter(pipeline_options=pipeline_options)

result = converter.convert("path/to/scanned_document.pdf")

使用 OCR 功能处理扫描版的 PDF 文件。

场景 3:限制文档处理大小

Python复制

from docling.document_converter import DocumentConverter

source = "path/to/your/document.pdf"

converter = DocumentConverter()

result = converter.convert(source, max_num_pages=100, max_file_size=20971520)

限制文档的处理大小,避免处理过大的文件。

场景 4:提取文档分块

Python复制

from docling.document_converter import DocumentConverter

from docling_core.transforms.chunker import HierarchicalChunker

converter = DocumentConverter()

result = converter.convert("path/to/your/document.pdf")

chunks = list(HierarchicalChunker().chunk(result.document))

print(chunks[0])

对文档进行分块处理,便于后续的分析和处理。

场景 5:与 LlamaIndex 集成

Python复制

from llama_index.readers.docling import DoclingReader

from llama_index.core import VectorStoreIndex

source = "path/to/your/document.pdf"

reader = DoclingReader()

documents = reader.load_data(source)

index = VectorStoreIndex.from_documents(documents)

将 Docling 与 LlamaIndex 集成,用于构建知识问答系统。

六、常见问题及解决方案

以下是使用 Docling 时常见的三个问题及其解决方案:

问题 1:OCR 引擎未安装

错误信息 :

Error: OCR engine not found

解决方案 :

如果使用 Tesseract OCR,需要先安装 Tesseract:

bash复制

brew install tesseract leptonica pkg-config

然后设置 TESSDATA_PREFIX 环境变量:

bash复制

TESSDATA_PREFIX=/opt/homebrew/share/tessdata/

问题 2:PyTorch 安装问题

错误信息 :

Error: PyTorch not found

解决方案 :

根据你的系统架构选择合适的 PyTorch 版本:

bash复制

pip install docling --extra-index-url https://download.pytorch.org/whl/cpu

问题 3:文档转换超时

错误信息 :

Error: Document conversion timeout

解决方案 :

在调用 convert() 方法时,可以通过 timeout 参数设置超时时间:

Python复制

result = converter.convert(source, timeout=300)

七、总结

Docling 是一个功能强大的 Python 第三方库,专注于文档处理和转换。它支持多种文档格式,提供深度解析功能,并能够与人工智能框架无缝集成。通过简单的安装和使用,Docling 可以极大地简化文档处理流程,提高工作效率。无论是将 PDF 转换为 Markdown,还是处理扫描版文档,Docling 都能轻松应对。如果你正在寻找一个高效、灵活的文档处理工具,Docling 绝对值得一试!

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

相关推荐

垂柳在不同的时节各是什么样的
bt365在线投注

垂柳在不同的时节各是什么样的

📅 06-30 👀 333
怎么快速把眼泪忍回去,深呼吸分散注意力(15个小妙招)
《阴阳师》黑豹哪里多 黑豹悬赏封印位置
电动车一度电能跑多少公里?行内人真实测试数据来了,不再怕虚标