超越OCR的富文档内容解析神器LayoutParser
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
论文题目《A unified toolkit for Deep Learning Based Document Image Analysis》
论文链接https://arxiv.org/abs/2103.15348
论文官方网站https://layout-parser.github.io/
论文开源项目https://github.com/Layout-Parser/layout-parser
上图是来自一篇论文从图中可以看出结构是非常复杂的既有图片又有文本而且文本还是两列形式传统的OCR是按行进行识别的识别结果可想而知是混乱的而本文提出的LayoutParser是借助于目标检测模型来提取重要的内容patch从而避免了两列内容按行扫描的混乱结果。BUTLayoutParser的贡献不仅如此下面来解密一下吧
LayoutParser核心贡献
-
提供了基于深度学习模型的layout检测、字符识别以及其他document image analysis (DIA) 任务的toolkit工具包
-
支持非常丰富的预训练模型
-
支持文本图像数据的标注以及模型的客户化
-
可以分享和贡献模型的社区
LayoutParser架构图
主要包括五个组件分别是layout detection models、layout data structures、OCR module、visualization and storage和layout data annotation and model training。
Layout detection models
Layout Detection模块主要是对文档图片进行目标检测识别比如使用Faster R-CNN、Mask R-CNN。LayoutParser是基于Detectron2提供最小的接口下面是调用的示例代码
import layoutparser as lp
image = cv2. imread (" image_file ") # load images
model = lp. Detectron2LayoutModel ("lp :// PubLayNet / faster_rcnn_R_50_FPN_3x / config ")
layout = model . detect ( image )
模型与数据集有适配问题加载模型的格式应该采用如下格式lp://<dataset-name>/<model-architecture-name>
目前已经预支持9个预训练模型和5个数据集注意如果不满足需求可以上传用户自定义模型如下表所示
Layout data structures
LayoutParser还提供了三种不同粒度的Layout数据类型分别是Coordinate、TextBlock和Layout他们的关系如下图所示
Coordinate是Layout的基本数据类型支持三种类型分别是Interval、Rectangle和Quadrilateral。Interval和Rectangle分别使用2、4个参数来定位1D和2D区域Quadrilateral支持一些复杂的区域提取参数有4个顶点和8个自由度
TextBlock存储每个Layout的位置和其他特性通过指定parent字段可以指定Layout的阅读顺序
Layout包括TextBlock的列表也支持处理一个batch的数据Layout同样可以嵌套使用。
以上三种Layout数据类型支持的运算操作如下表所示
OCR module
LayoutParser为常见的OCR工具提供了统一的接口示例代码如下
ocr_agent = lp.TesseractAgent()
# Can be easily switched to other OCR software
tokens = ocr_agent.detect(image)
Visualization and storage
LayoutParser支持导出json、CSV以及XML数据格式支持导入模型训练的COCO、网页数据。当然也可以实时看到OCR的识别结果如下图所示
Layout data annotation and model training
LayoutParser集成了主动学习工具用户只需要标注图像中的部分目标其他目标就会自动被标注可以大大减少用户的标注时间
个人使用感受在一些结构复杂的文本图像上提取效果比使用OCR工具要好很多。