工业级PDF版面识别,PP-DocLayout

1,086 阅读4分钟

github

PP-DocLayout 开源方案

版面识别的主要挑战

当前版面识别面临的主要挑战来自以下三个方面:

  1. 文档类型的多样性

    • 主流模型主要针对论文类文档、杂志、报纸、研报等,其他类型的文档泛化性较差。
  2. 文档结构的复杂性

    • 现有的结构定义较为简单,通常围绕标题、文本、图片、表格等基本结构,特殊结构的识别较少。
  3. 实时性能不佳

    • 如果一页PDF文档的版式识别需要几秒钟,实用性就会受到较大影响。

PP-DocLayout 提供了工业级的版面识别体验,能够高效应对上述挑战。

PP-DocLayout 的特点

  • 支持多种文档类型
    包括中英文论文、研报、试卷、书籍、报纸、杂志等。

  • 高精度识别与定位
    支持23类版面区域的精确识别与定位,包括:

    • 文档标题、段落标题、文本、页码、摘要、目录、参考文献、脚注、页眉、页脚
    • 算法、公式、公式编号、图像、图像标题、表格、表格标题、图表、图表标题、印章
    • 页眉图像、页脚图像、侧栏文本等
  • 语义层次解析
    通过识别文档标题、摘要、段落标题和正文等元素,可以更好地解析文档的语义层次和逻辑关系。

  • 高价值信息结构化
    对公式、印章、表格、图表等高价值信息的结构化,使得进一步的数据处理和分析更加精准。

  • 细粒度的元素类别
    细粒度的页眉图像、页脚图像、侧栏文本等类别,有助于提高文档版面布局顺序预测的质量。

  • 实时性能

    • CPU 上每秒可处理约 69 个文档图像页面。
    • GPU 上每秒可处理高达 123 个文档图像页面。

PP-DocLayout 系列模型

PP-DocLayout 提供了三个不同规模的模型:

  1. 高精度模型:PP-DocLayout-L

    • GPU 上每个页面端到端推理耗时 13.4 ms。
  2. 精度和效率均衡模型:PP-DocLayout-M

    • GPU 上每个页面端到端推理耗时 12.7 ms。
  3. 高效率模型:PP-DocLayout-S

    • GPU 上每个页面处理耗时约 8.1 ms。

PP-DocLayout 的优化

  • PP-DocLayout-L

    • 基于 GOT-OCR2.0 模型的视觉编码器作为“教师”模型,PP-HGNetV2-B4 作为“学生”模型。在50万文档图像数据上,利用 L2 损失函数,通过大模型的输出指导小模型学习。
  • PP-DocLayout-M/S

    • 采用半监督学习技术,基于 PP-DocLayout-L 生成伪标签,通过每个类别得分分布制定最佳阈值优化伪标签质量。然后基于真实标注和伪标签数据训练 PP-DocLayout-M 和 PP-DocLayout-S 模型。
  • 灵活的后处理

    • 支持每个类别的动态阈值调整,以优化漏检和误检情况。
    • 支持重叠框过滤,自动筛选最优的检测结果,消除多余干扰框。
    • 可自由扩展框边长,便于输出正确的版面区域内容。
    • 可选框的合并模式,支持输出外边框、内框和所有框,适应不同下游任务需求。

PP-DocLayout 用法

安装

python -m pip install paddlepaddle-gpu==3.0.0rc0 -i https://www.paddlepaddle.org.cn/packages/stable/cu123/
pip install https://paddle-model-ecology.bj.bcebos.com/paddlex/whl/paddlex-3.0.0rc0-py3-none-any.whl

调用 PP-DocLayout-L

from paddlex import create_model
model = create_model(model_name="PP-DocLayout-L")
output = model.predict("layout.jpg", batch_size=1, layout_nms=True)
for res in output:
    res.print()
    res.save_to_img(save_path="./output/")
    res.save_to_json(save_path="./output/res.json")

image.png

model.predict() 参数说明*

• threshold*

动态阈值调整,支持传入浮点数或自定义各个类别的阈值字典,为每个类别设定专属的检测得分阈值,从而根据数据优化漏检或误检情况。

• layout_nms*

重叠框过滤,布尔类型,指定是否使用NMS(非极大值抑制)过滤重叠框,自动筛选最优的检测结果。

• layout_unclip_ratio*

可调框边长,调整检测框的缩放倍数,自由扩展或收缩框边长,保持中心点不变。

• layout_merge_bboxes_mode*

框合并模式,支持“large”(保留外框)和“small”(保留内框)两种合并模式。

• use_hpip*

是否启用高性能推理来优化推理过程,进一步提升效率。