Python使用Docling库玩转文档处理

 更新时间:2025年02月17日 10:30:23   作者:正东AI  
Docling 是一个强大的 Python 第三方库,专注于文档处理和转换,所以本文将带大家深入了解 Docling 的强大功能,展示它如何帮助我们高效处理文档,感兴趣的可以了解下

一、背景

在日常开发中,文档处理一直是令人头疼的问题。无论是技术文档、设计文档,还是各种格式的文件(如 PDF、DOCX、PPTX等),如何高效地解析、转换和提取信息,常常耗费大量精力。Docling 的出现,为这一问题提供了优雅的解决方案。它不仅支持多种主流文档格式,还能深度解析PDF,提取页面布局、表格结构等复杂信息。更重要的是,Docling 提供了统一的文档表示格式和便捷的 CLI,使得文档处理变得简单高效。

接下来,我们将深入了解 Docling 的强大功能,并通过实际代码示例,展示它如何帮助我们高效处理文档。

二、什么是 Docling

Docling 是一个强大的 Python 第三方库,专注于文档处理和转换。它支持多种文档格式,包括PDF、DOCX、PPTX、HTML、图片等。Docling 的核心功能是深度解析 PDF,能够识别页面布局、阅读顺序、表格结构,甚至支持 OCR功能,处理扫描版文档。此外,Docling 还提供了统一的文档表示格式(DoclingDocument),方便开发者进行后续处理。

三、安装 Docling

作为第三方库,Docling 的安装非常简单。只需通过 pip 命令即可完成安装:

pip install docling

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

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

安装完成后,即可使用 Docling 提供的强大功能。

四、库函数使用方法

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

1. DocumentConverter.convert()

该函数用于转换文档,支持本地路径或 URL。

from docling.document_converter import DocumentConverter

source = "https://arxiv.org/pdf/2408.09869"  # 文档路径或 URL
converter = DocumentConverter()
result = converter.convert(source)

source:文档的路径或 URL。

converter.convert():将文档转换为 Docling 的内部表示格式。

2. export_to_markdown()

将文档导出为 Markdown 格式。

markdown_content = result.document.export_to_markdown()
print(markdown_content)

export_to_markdown():将文档内容转换为 Markdown 格式。

3. export_to_json()

将文档导出为 JSON 格式。

json_content = result.document.export_to_json()
print(json_content)

export_to_json():将文档内容转换为 JSON 格式。

4. HierarchicalChunker.chunk()

对文档进行分块处理,返回文本内容和元数据。

from docling_core.transforms.chunker import HierarchicalChunker

chunks = list(HierarchicalChunker().chunk(result.document))
print(chunks[0])

HierarchicalChunker():创建分块器。

chunk(result.document):对文档进行分块处理。

5. PdfPipelineOptions

自定义 PDF 转换选项。

from docling.datamodel.pipeline_options import PdfPipelineOptions

pipeline_options = PdfPipelineOptions(do_table_structure=True)
pipeline_options.table_structure_options.do_cell_matching = False

PdfPipelineOptions:自定义 PDF 转换选项。

do_table_structure:是否解析表格结构。

do_cell_matching:是否将表格单元格映射回 PDF。

五、使用场景示例

以下是五个实际使用场景及其代码示例:

场景 1:将 PDF 转换为 Markdown

from docling.document_converter import DocumentConverter

source = "https://arxiv.org/pdf/2408.09869"
converter = DocumentConverter()
result = converter.convert(source)
markdown_content = result.document.export_to_markdown()
print(markdown_content)

convert():将 PDF 转换为 Docling 的内部表示格式。

export_to_markdown():将文档导出为 Markdown 格式。

场景 2:限制文档大小

from docling.document_converter import DocumentConverter

source = "https://arxiv.org/pdf/2408.09869"
converter = DocumentConverter()
result = converter.convert(source, max_num_pages=100, max_file_size=20971520)

max_num_pages:限制文档的最大页数。

max_file_size:限制文档的最大文件大小。

场景 3:自定义 PDF 转换选项

from docling.datamodel.pipeline_options import PdfPipelineOptions
from docling.document_converter import DocumentConverter

pipeline_options = PdfPipelineOptions(do_table_structure=True)
pipeline_options.table_structure_options.do_cell_matching = False
converter = DocumentConverter(pipeline_options=pipeline_options)
result = converter.convert("path/to/your/document.pdf")

PdfPipelineOptions:自定义 PDF 转换选项。

do_table_structure 和 do_cell_matching:控制表格结构的解析方式。

场景 4:文档分块处理

from docling.document_converter import DocumentConverter
from docling_core.transforms.chunker import HierarchicalChunker

converter = DocumentConverter()
result = converter.convert("https://arxiv.org/pdf/2206.01062")
chunks = list(HierarchicalChunker().chunk(result.document))
print(chunks[0])

HierarchicalChunker.chunk():对文档进行分块处理。

输出包含文本内容和元数据,方便后续处理。

场景 5:使用 OCR 处理扫描版 PDF

from docling.datamodel.pipeline_options import PipelineOptions, TesseractOcrOptions
from docling.document_converter import DocumentConverter

pipeline_options = PipelineOptions()
pipeline_options.do_ocr = True
pipeline_options.ocr_options = TesseractOcrOptions()
converter = DocumentConverter(pipeline_options=pipeline_options)
result = converter.convert("path/to/scanned_document.pdf")

PipelineOptions 和 TesseractOcrOptions:配置 OCR 选项。

do_ocr:启用 OCR 功能。

六、常见问题及解决方案

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

问题 1:TensorFlow 相关警告

错误信息:

This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.

解决方案:安装适合 CPU 的 TensorFlow 版本。

conda create --name py11 python==3.11
conda activate py11
conda install tensorflow

问题 2:Tesseract OCR 安装问题

错误信息:Tesseract OCR 未安装或配置错误。

解决方案:安装 Tesseract OCR 并设置 TESSDATA_PREFIX。

# macOS
brew install tesseract leptonica pkg-config
TESSDATA_PREFIX=/opt/homebrew/share/tessdata/

# Linux
apt-get install tesseract-ocr tesseract-ocr-eng libtesseract-dev libleptonica-dev pkg-config
TESSDATA_PREFIX=$(dpkg -L tesseract-ocr-eng | grep tessdata$)

问题 3:Tesserocr 安装失败

错误信息:Tesserocr 安装失败。

解决方案:重新安装 Tesserocr。

pip uninstall tesserocr
pip install --no-binary :all: tesserocr

七、总结

Docling是一个功能强大的文档处理库,支持多种文档格式和深度解析功能。它提供了统一的文档表示格式和丰富的导出选项,能够满足多种开发需求。通过简单的安装和使用,开发者可以轻松地将文档处理集成到自己的项目中。无论是技术文档处理还是AI 应用开发,Docling 都是一个值得信赖的选择。

到此这篇关于Python使用Docling库玩转文档处理的文章就介绍到这了,更多相关Python Docling文档处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 利用numpy+matplotlib绘图的基本操作教程

    利用numpy+matplotlib绘图的基本操作教程

    这篇文章主要给大家介绍了利用numpy+matplotlib绘图的基本操作,文中介绍的非常详细,对大家学习matplotlib绘图具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧。
    2017-05-05
  • wxPython:python首选的GUI库实例分享

    wxPython:python首选的GUI库实例分享

    wxPython是Python语言的一套优秀的GUI图形库。允许Python程序员很方便的创建完整的、功能键全的GUI用户界面。 wxPython是作为优秀的跨平台GUI库wxWidgets的Python封装和Python模块的方式提供给用户的
    2019-10-10
  • python 实现字符串下标的输出功能

    python 实现字符串下标的输出功能

    这篇文章主要介绍了python 简单的实现字符串下标的输出,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • python实现udp聊天窗口

    python实现udp聊天窗口

    这篇文章主要为大家详细介绍了python实现udp聊天窗口,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Python使用ConfigParser模块操作配置文件的方法

    Python使用ConfigParser模块操作配置文件的方法

    这篇文章主要介绍了Python使用ConfigParser模块操作配置文件的方法,结合实例形式分析了Python基于ConfigParser模块针对配置文件的创建、读取、写入、判断等相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • python如何生成密码字典

    python如何生成密码字典

    这篇文章主要介绍了python如何生成密码字典,密码字典主要是配合解密使用,下面利用python实现生成密码字典,需要的小伙伴可以参考一下
    2022-03-03
  • Python报错ValueError: cannot convert float NaN to integer的解决方法

    Python报错ValueError: cannot convert float NaN to intege

    在Python编程中,我们经常需要处理各种数据类型,包括浮点数和整数,然而,有时候我们可能会遇到一些意外的情况,比如将一个包含NaN(Not a Number)的浮点数转换为整数时,就会抛出错误,本文将探讨这个错误的原因,并给出几种可能的解决方案,需要的朋友可以参考下
    2024-09-09
  • Python类的定义和使用详情

    Python类的定义和使用详情

    这篇文章主要介绍了Python类的定义与使用,类名只要是一个合法的标识符即可,但这仅仅满足的是 Python 的语法要求:如果从程序的可读性方面来看,Python 的类名必须是由一个或多个有意义的单词连缀而成的,下文基于这些基础内容展开介绍,需要的朋友可以参考一下
    2022-03-03
  • Python替换NumPy数组中大于某个值的所有元素实例

    Python替换NumPy数组中大于某个值的所有元素实例

    这篇文章主要介绍了Python替换NumPy数组中大于某个值的所有元素实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Pytest如何使用skip跳过执行测试

    Pytest如何使用skip跳过执行测试

    这篇文章主要介绍了Pytest如何使用skip跳过执行测试,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08

最新评论