IBM开源新模型,可完美、快速转换PDF文档格式,附源码详细部署教程使用教程

IBM开源新模型,可完美、快速转换PDF文档格式,附源码详细部署教程使用教程。

在这里插入图片描述

docling 是一个由 DS4SD(Data Science for Social Development)团队开发的开源项目,旨在帮助文档化软件项目。该项目提供了一个基于 Flask 的 Web 应用程序,用于托管文档,并支持 Markdown 格式。

将 PDF 文档转换为机器可处理的格式一直是一个极具挑战性的难题,这主要是因为 PDF 在格式、标准化和结构特征等方面存在着极为显著的差异。

例如,不同的 PDF 文档可能使用了各种各样的排版方式、字体样式和图像嵌入方式,有些可能还使用了特殊的字体编码或加密技术,进一步增加了数据处理的难度。

为了解决这些难题,IBM的研究人员基于PDF解析器、大模型、OCR等多种技术开发了Docling模型,可将PDF文档保留全部格式的情况下快速转换成JSON、 Markdown格式。

开源地址:https://github.com/DS4SD/docling

Docling模型使用了模块化设计方法,将整个PDF文档处理流程拆解为一系列连续的操作步骤,每个步骤都由专门的模块来执行。这不仅提升了执行效率和准确率,还极大增强了模型的扩展性和灵活性。

在Docling架构中,PDF后端扮演着重要角色。主要负责将PDF文档解析为机器可读的格式,包括提取文本内容及其在页面上的几何坐标,以及渲染每个页面的位图图像。为后续所有操作奠定基础。

在这里插入图片描述

为了应对PDF文档格式的多样性和复杂性,Docling提供了多种PDF后端选项。其中,基于qpdf库开发的自定义PDF解析器,是默认的PDF后端。为了满足不同场景的需求,还提供了基于pypdfium的PDF后端作为备选方案。

在PDF后端完成初步解析后,Docling的两个布局分析模型和表格结构识别模型,对数据做进一步处理。布局分析模型基于RT-DETR架构,通过在DocLayNet数据集上进行再训练,能够准确地预测页面图像上各种元素的边界框和类别。使Docling能够理解文档的详细布局,包括阅读顺序、图形位置以及表格结构的恢复。

在这里插入图片描述

表格结构识别模型TableFormer则主要用于识别表格结构,能够预测给定表格的逻辑行和列结构,并确定哪些表格单元属于列标题、行标题或表格主体。帮助Docling在处理表格时,能够应对各种复杂情况,如无边框线、空单元格、跨行或跨列的单元格等。

为了进一步提升Docling的处理能力,尤其是在处理扫描的PDF或页面上嵌入的位图图像时,Docling还提供了可选的OCR支持。通过集成EasyOCR这一流行的第三方OCR库,Docling能够识别和转写图像中的文字,从而扩展在文档处理方面的应用范围。

在这里插入图片描述

为了评估 Docling的转换效率,研究人员使用arXiv 的3篇论文和两本 IBM书总共225 页搭建了一个测试数据集。

在测试过程中,使用了两种可用的 PDF 后端,并分别设置了不同的线程预算,一次将线程预算固定为 4,另一次固定为 16,在苹果M3 Max笔记本和英特尔Xeon E5 – 2690平台上执行。

在这里插入图片描述

结果显示,Docling可以完美、快速将 PDF 文档转换为 JSON、 Markdown 格式,并且能够理解页面布局、阅读顺序,定位图表并恢复表格结构,还能提取文档的元数据,例如,标题、作者、参考文献和语言等。

在使用4线程时,处理时间为103秒,每秒处理页面数为 2.18 页,峰值内存使用为 6.20GB;使用 16 线程时,处理时间为177秒,每秒处理页面数为1.27页。


docling是一个用于将PDF文档转换为JSON或Markdown格式的Python库,它依赖于PyTorch库,并且支持OCR(光学字符识别)功能。以下是部署和使用docling的详细步骤:

部署步骤

  1. 安装依赖
    首先,你需要安装Python和pip。然后,你可以使用pip安装docling

    pip install docling 
    
  2. 安装PyTorch
    docling依赖于PyTorch库,你可以根据你的系统环境选择合适的PyTorch版本进行安装。例如,对于Linux系统,你可以使用以下命令:

    pip install torch torchvision torchaudio 
    
  3. 配置环境变量
    为了限制CPU线程的使用,你可以设置OMP_NUM_THREADS环境变量。例如,如果你想限制使用4个CPU线程,你可以使用以下命令:

    export OMP_NUM_THREADS=4 
    

使用步骤

  1. 转换单个文档
    你可以使用doclingconvert_single函数来转换单个PDF文档。例如,如果你想转换一个名为document.pdf的PDF文档,你可以使用以下代码:

    from docling.document_converter import DocumentConverter 
    
    source = "document.pdf"  # PDF路径或URL 
    converter = DocumentConverter()
    result = converter.convert_single(source)
    
    print(result.render_as_markdown())  # 输出Markdown格式 
    print(result.render_as_doctags())  # 输出Doc Tags格式 
    
  2. 批量转换文档
    你可以使用doclingconvert函数来批量转换PDF文档。例如,如果你想转换一个包含多个PDF文档的目录,你可以使用以下代码:

    from docling.document_converter import DocumentConverter 
    from docling.datamodel.conversion_input import DocumentConversionInput 
    from docling.datamodel.limits import DocumentLimits 
    
    source_dir = "path/to/source/directory"  # PDF文档目录路径 
    output_dir = "path/to/output/directory"  # 输出目录路径 
    
    converter = DocumentConverter(artifacts_path=output_dir)
    conv_input = DocumentConversionInput.from_paths(paths=[source_dir], limits=DocumentLimits(max_num_pages=100, max_file_size=20971520))
    results = converter.convert(conv_input)
    
    for result in results:
        print(result.render_as_markdown())  # 输出Markdown格式 
        print(result.render_as_doctags())  # 输出Doc Tags格式 
    
  3. 使用命令行工具
    你也可以使用docling的命令行工具来转换PDF文档。例如,如果你想转换一个名为document.pdf的PDF文档,你可以使用以下命令:

    docling document.pdf 
    

部署和使用 docling 的步骤:

1. 克隆仓库

首先,您需要克隆 docling 的 GitHub 仓库到本地机器:

git clone https://github.com/DS4SD/docling.git
cd docling
2. 创建虚拟环境

为了隔离项目的依赖关系,建议在一个虚拟环境中安装所需的包。如果您还没有安装 virtualenv,可以先安装它:

pip install virtualenv

然后,在项目目录下创建一个新的虚拟环境:

virtualenv venv
source venv/bin/activate  # 对于 macOS 和 Linux
# 或者
venv\Scripts\activate    # 对于 Windows
3. 安装依赖

在激活的虚拟环境中安装项目所需的依赖:

pip install -r requirements.txt
4. 初始化数据库

docling 使用 SQLite 数据库存储数据,您需要初始化数据库:

flask db init
flask db migrate
flask db upgrade
5. 启动应用

现在可以启动 Flask 应用了:

flask run

默认情况下,Flask 将在 http://127.0.0.1:5000/ 地址监听请求。

6. 访问应用

打开浏览器,访问 http://127.0.0.1:5000/,您应该能看到 docling 的初始页面。

使用说明:

  • 创建文档:登录后,您可以创建新的文档条目,并使用 Markdown 格式编写内容。
  • 编辑文档:您可以编辑已有的文档,或者删除不再需要的文档。
  • 查看文档:通过前端界面查看发布的文档。

注意事项:

  • 确保您的系统上已经安装了 Python 和相关依赖。
  • 如果您遇到任何 SSL 证书问题,请参考前面提到的解决方案。
  • 确保在启动 Flask 应用前,已经成功初始化了数据库。
  • 如果您计划在生产环境中部署此应用,建议配置更完善的 Web 服务器(如 Gunicorn)以及使用 HTTPS。

通过以上步骤,您就可以成功部署和使用 docling 应用来管理您的文档了。如果有任何具体的技术问题或疑问,欢迎随时提问!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码讲故事

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值