当前位置: 首页 > news >正文

玩转文档处理,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 绝对值得一试!

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

相关文章:

  • Java常用设计模式及其应用场景
  • PyCharm无法识别conda环境
  • Python 日志记录全解析:从入门到进阶的实用指南
  • 【深度学习】基于MXNet的多层感知机的实现
  • 【深度学习】如何一步步实现SGD随机梯度下降算法
  • 本地DeepSeek模型GGUF文件转换为PyTorch格式
  • ubuntu24 springboot jar设置宕机重启
  • App接入图表:MPAndroidChart,如何创建柱状图、双柱状图以及折线图
  • Python的顺序结构和循环结构
  • 个人博客测试报告
  • 金融小知识:股指期货交割日时间是每月几号?
  • LSTM-SVM故障诊断 | 基于长短期记忆神经网络-支持向量机多特征分类预测/故障诊断Matlab代码实现
  • python学opencv|读取图像(七十五)人脸识别:Fisherfaces算法和LBPH算法
  • SpringBoot 中封装 Cors 自动配置
  • cv2库的使用及图像预处理02
  • 如何快速在项目中集成AI功能:AI信箱工具使用
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_pool_t 类型
  • C++笔记之标准库中用于处理迭代器的`std::advance`和`std::distance`
  • Rust中的collections
  • DeepSeek在学术读写翻译中的独特优势
  • 乡村快递取件“跑腿费”屡禁不止?云南元江县公布举报电话
  • 又一日军“慰安妇”制度受害者去世,大陆登记在册幸存者仅剩7人
  • 吴清:创造条件支持优质中概股企业回归内地和香港股市
  • 鸿蒙概念股强势上涨,鸿蒙电脑本月正式发布,生态链即将补全
  • 市场监管总局发布《城镇房屋租赁合同(示范文本)》
  • 机关食堂向游客开放的重庆荣昌区,“消费市场迎来历史性突破”