AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


文档OCR版式识别,兼顾速度与精度,YOLO当首选
发布日期:2024-11-11 21:30:01 浏览次数: 1695 来源:CourseAI



最近分享了很多关于文档OCR版式识别的文章。总体来看:

  • 视觉语言大模型文档OCR通用效果最强,用起来也最方便;但是缺点也非常明显,由于涉及到视觉模型、桥接层、语言模型三个部分,微调起来非常不方便。

  • LayoutLM系列模型,基于transformer,虽然能应对多重任务,精准度尚可,但是识别速度没有优势。

  • YOLO系列的文档OCR版式识别,优点:是速度快,微调模型也方便,在单一场景下精度不输上面两类模型;缺点:是通用性不强,不能像transformer模型那样完成多个任务

建议:

  • 如果是做多模态大模型研究的朋友,可以尝试做一些文档识别、文档问答等一个模型支持多种任务的方向,大而全肯定是大模型发展通用人工智能的方向。

  • 如果是最垂类任务的朋友,选择yolo是目前最佳的选择,成千上万页的PDF文档的请求涌过来,不要钱的CPU随便加还是能抗住的,大模型用上GPU那可就太奢侈了。

DocLayout-YOLO实战

import cv2
from doclayout_yolo import YOLOv10

# Load the pre-trained model
mode = YOLOv10.from_pretrained("juliozhao/DocLayout-YOLO-DocStructBench")

# Perform prediction
det_res = model.predict(
    "path/to/image",   # Image to predict
    imgsz=1024,        # Prediction image size
    conf=0.2,          # Confidence threshold
    device="cuda:0"    # Device to use (e.g., 'cuda:0' or 'cpu')
)

# Annotate and save the result
annotated_frame = det_res[0].plot(pil=True, line_width=5, font_size=20)
cv2.imwrite("result.jpg", annotated_frame)

也可通过https://huggingface.co/spaces/opendatalab/DocLayout-YOLO 实测自己的文档数据。

笔者测试的样例:

  • 图、表、文混合,能轻松分割识别
  • 多表格混合排列,也能轻松分割

DocLayout-YOLO

  • DocLayout-yolo是上海AI实验室推出的基于yolov10,通过提供多样性文档预训练及适配文档检测的模型结构优化,可针对多样性文档进行实时鲁棒的检测。

  • 360LayoutAnalysis是360人工智能研究院知识图谱&文档理解团队基于yolov8开源的多场景轻量化版式分析模型。

双方都用的是YOLO系列模型,微调的文档布局检测模型。

主要区别在于:

  • DocLayout-yolo使用的是yolov10虽然沿用了yolov8的框架,但是推理速度比yolov8快了不少
  • DocLayout-yolo在文档预训练阶段,将文档合成视为二维装箱问题,并提出Mesh-candidate BestFit算法,合成类型多样性的大规模合文档数据集DocSynth-300K。这个数据集的预训练显著提高了在各种文档类型上的微调性能。360LayoutAnalysis使用的训练数据则要单一的多,所以开源出来的模型只对单一场景效果较好。

  • DocLayout-yolo在模型结构优化方面,提出了全局到局部可控的感知模块(GL-CRM),确保在尺度变化不一的文档元素上得到精准检测结果。

DocSynth-300K 数据集构建

从图上可知,DocSynth-300K数据集构建分为两个部分:

数据预处理(preprocessing)

  1. 原始数据的抓取(raw data)

  2. 页面版式元素的抽取与标记(Element pool)

为了确保包含各种文档元素,利用大约 2800 个不同文档页面的 74 个不同文档元素,作为初始数据。

  1. 版式元素的数据增强(augmentation)

对页面进行分段,通过每个细粒度类别提取和构建元素池。 同时,为了保持同一类别元素内部的多样性,我们设计了一个增强管道,扩展了元素数量少于 100 个的稀有类别的数据库池

数据增强策略

  1. 随机翻转:考虑到不同文档中文本方向的多种可能性,以 0.5 的概率对原始数据进行水平和垂直方向的随机翻转,以增强原始数据。

  2. 随机亮度和对比度:通过以 0.5 的概率随机改变元素的亮度和对比度,模拟各种照明条件和亮度水平下的真实世界环境。

  3. 随机裁剪:为了引导模型更多地关注局部特征,以 0.7 的概率对元素进行随机裁剪,裁剪区域范围为 0.5  0.9。

  4. 边缘提取:使用 Sobel 滤波器进行边缘检测,并以 0.2 的概率提取元素内的轮廓信息,从而增强特征的丰富性。

  5. 弹性变换和高斯噪声:通过轻微的弹性变换和高斯噪声添加过程来扭曲和模糊原始数据,以模拟现实中抖动或分辨率引起的失真

版式的布局生成(layout Generation)

为了确保布局多样性和与现实世界文档的一致性,受二维装箱问题的启发,我们将当前布局构建的可用网格视为不同大小的“箱子”,并迭代地执行最佳匹配以生成更多样化和合理的文档布局,平衡布局多样性(随机性)和美观性(例如填充率和对齐)。

  1. 版式元素候选集的采样(candidate sampling)

对于每个空白页面,通过基于元素大小的从元素池中分层抽样获得一个子集,作为候选集。 然后,从候选集中随机抽取一个元素,并将其放置在页面上的某个位置。

  1. 版式布局网络的构建(meshgrid construction)

基于布局构造网格,并过滤掉与插入元素重叠的无效网格。 只有剩余的网格才能在后续步骤中参与与候选者的匹配。

  1. 最佳拟合版式元素的搜索 (best Pair search)

对于每个候选者,遍历所有满足大小要求的网格,并搜索具有最大填充率的 Mesh-candidate 对。 随后,从候选集中移除最佳候选,并更新布局。

  1. 迭代布局填充 ( iterative layout filling)

重复步骤 2  3 直到没有有效的 Mesh-candidate 满足大小要求。 最终,将对所有填充的元素分别应用随机中心缩放。

Mesh-candidate BestFit 布局生成算法

该算法迭代地搜索候选者和所有网格 (bin) 之间的最佳匹配。 找到最佳匹配对后,候选元素将被插入文档,并继续迭代地搜索最佳匹配,直到元素数量达到阈值 (经验性地设置为 15)。 匹配阈值设置为 。

全局到局部模型架构 (GL-CRM)

文档图像中的不同元素在尺度上可能存在很大差异,例如单行标题和整页表格。 为了处理这种尺度变化的挑战,我们引入了一个称为 GL-CRM 的分层架构,它包含两个主要部分:

  • 可控感受野模块 (CRM) :灵活地提取和整合具有多个尺度和粒度的特征

  • 全局到局部设计 (GL)。  GL 架构则以从全局上下文(整页尺度)到子块区域(中等尺度)再到局部语义信息的分层感知过程为特征。

如何理解全局到局部的设计?

  • 全局级别:

    对于包含丰富纹理细节的浅层阶段,使用具有扩大核大小和膨胀率的 CRM (k=5,d=1,2,3)。 大内核有助于捕获更多纹理细节并保留整个页面元素的局部模式。

  • 块级别:

    对于特征图被下采样且纹理特征被减少的中间阶段,使用具有较小内核的 CRM (k=3,d=1,2,3)。 在这种情况下,扩展的膨胀率足以感知中尺度元素,例如文档子块。

  • 局部级别:

    对于语义信息占主导地位的深层阶段,使用一个基本瓶颈,它充当一个轻量级模块,专注于局部语义信息。

版式布局元素

  • 文档数据集类型,4种
  • 版式元素:10种


53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询