微信扫码
与创始人交个朋友
我要投稿
最近分享了很多关于文档OCR版式识别的文章。总体来看:
视觉语言大模型文档OCR通用效果最强,用起来也最方便;但是缺点也非常明显,由于涉及到视觉模型、桥接层、语言模型三个部分,微调起来非常不方便。
LayoutLM系列模型,基于transformer,虽然能应对多重任务,精准度尚可,但是识别速度没有优势。
YOLO系列的文档OCR版式识别,优点:是速度快,微调模型也方便,在单一场景下精度不输上面两类模型;缺点:是通用性不强,不能像transformer模型那样完成多个任务
建议:
如果是做多模态大模型研究的朋友,可以尝试做一些文档识别、文档问答等一个模型支持多种任务的方向,大而全肯定是大模型发展通用人工智能的方向。
如果是最垂类任务的朋友,选择yolo是目前最佳的选择,成千上万页的PDF文档的请求涌过来,不要钱的CPU随便加还是能抗住的,大模型用上GPU那可就太奢侈了。
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是上海AI实验室推出的基于yolov10,通过提供多样性文档预训练及适配文档检测的模型结构优化,可针对多样性文档进行实时鲁棒的检测。
360LayoutAnalysis是360人工智能研究院知识图谱&文档理解团队基于yolov8开源的多场景轻量化版式分析模型。
双方都用的是YOLO系列模型,微调的文档布局检测模型。
主要区别在于:
DocLayout-yolo在文档预训练阶段,将文档合成视为二维装箱问题,并提出Mesh-candidate BestFit算法,合成类型多样性的大规模合文档数据集DocSynth-300K。这个数据集的预训练显著提高了在各种文档类型上的微调性能。360LayoutAnalysis使用的训练数据则要单一的多,所以开源出来的模型只对单一场景效果较好。
DocLayout-yolo在模型结构优化方面,提出了全局到局部可控的感知模块(GL-CRM),确保在尺度变化不一的文档元素上得到精准检测结果。
从图上可知,DocSynth-300K数据集构建分为两个部分:
原始数据的抓取(raw data)
页面版式元素的抽取与标记(Element pool)
为了确保包含各种文档元素,利用大约 2800 个不同文档页面的 74 个不同文档元素,作为初始数据。
对页面进行分段,通过每个细粒度类别提取和构建元素池。 同时,为了保持同一类别元素内部的多样性,我们设计了一个增强管道,扩展了元素数量少于 100 个的稀有类别的数据库池
随机翻转:考虑到不同文档中文本方向的多种可能性,以 0.5 的概率对原始数据进行水平和垂直方向的随机翻转,以增强原始数据。
随机亮度和对比度:通过以 0.5 的概率随机改变元素的亮度和对比度,模拟各种照明条件和亮度水平下的真实世界环境。
随机裁剪:为了引导模型更多地关注局部特征,以 0.7 的概率对元素进行随机裁剪,裁剪区域范围为 0.5 0.9。
边缘提取:使用 Sobel 滤波器进行边缘检测,并以 0.2 的概率提取元素内的轮廓信息,从而增强特征的丰富性。
弹性变换和高斯噪声:通过轻微的弹性变换和高斯噪声添加过程来扭曲和模糊原始数据,以模拟现实中抖动或分辨率引起的失真
为了确保布局多样性和与现实世界文档的一致性,受二维装箱问题的启发,我们将当前布局构建的可用网格视为不同大小的“箱子”,并迭代地执行最佳匹配以生成更多样化和合理的文档布局,平衡布局多样性(随机性)和美观性(例如填充率和对齐)。
对于每个空白页面,通过基于元素大小的从元素池中分层抽样获得一个子集,作为候选集。 然后,从候选集中随机抽取一个元素,并将其放置在页面上的某个位置。
基于布局构造网格,并过滤掉与插入元素重叠的无效网格。 只有剩余的网格才能在后续步骤中参与与候选者的匹配。
对于每个候选者,遍历所有满足大小要求的网格,并搜索具有最大填充率的 Mesh-candidate 对。 随后,从候选集中移除最佳候选,并更新布局。
重复步骤 2 3 直到没有有效的 Mesh-candidate 满足大小要求。 最终,将对所有填充的元素分别应用随机中心缩放。
该算法迭代地搜索候选者和所有网格 (bin) 之间的最佳匹配。 找到最佳匹配对后,候选元素将被插入文档,并继续迭代地搜索最佳匹配,直到元素数量达到阈值 (经验性地设置为 15)。 匹配阈值设置为 。
文档图像中的不同元素在尺度上可能存在很大差异,例如单行标题和整页表格。 为了处理这种尺度变化的挑战,我们引入了一个称为 GL-CRM 的分层架构,它包含两个主要部分:
可控感受野模块 (CRM) :灵活地提取和整合具有多个尺度和粒度的特征
全局到局部设计 (GL)。 GL 架构则以从全局上下文(整页尺度)到子块区域(中等尺度)再到局部语义信息的分层感知过程为特征。
如何理解全局到局部的设计?
全局级别:
对于包含丰富纹理细节的浅层阶段,使用具有扩大核大小和膨胀率的 CRM (k=5,d=1,2,3)。 大内核有助于捕获更多纹理细节并保留整个页面元素的局部模式。
块级别:
对于特征图被下采样且纹理特征被减少的中间阶段,使用具有较小内核的 CRM (k=3,d=1,2,3)。 在这种情况下,扩展的膨胀率足以感知中尺度元素,例如文档子块。
局部级别:
对于语义信息占主导地位的深层阶段,使用一个基本瓶颈,它充当一个轻量级模块,专注于局部语义信息。
53AI,企业落地应用大模型首选服务商
产品:大模型应用平台+智能体定制开发+落地咨询服务
承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2024-11-13
最复杂多智能体发布!百度推出“秒哒”和文心iRAG
2024-11-12
【RAG&多模态】多模态RAG-ColPali:使用视觉语言模型实现高效的文档检索
2024-11-11
开摆!谷歌AI视频上线!脚本、素材、剪片全稿定!
2024-11-10
硬核升级!在Ollama中使用Llama3.2视觉模型
2024-11-08
dify案例分享-基于多模态模型的发票识别2-多种发票识别
2024-11-07
星辰 AI 大模型:中国电信的 AI 大模型集合平台,支持多模态任务和多语种处理
2024-11-05
NotebookLM 启发的 AI 原生产品设计思路
2024-11-01
Oasis,世界第一款 AI 实时生成游戏来了,在线试玩,体验未来
2024-05-30
2024-09-12
2024-06-17
2024-08-06
2024-08-30
2024-04-21
2024-06-26
2024-07-07
2024-07-21
2024-06-14
2024-09-26
2024-09-26
2024-09-01
2024-07-15
2024-07-14
2024-07-10
2024-07-02
2024-06-29