PaddleOCR下的PP-Structure一般用于文档图片的版面分析、表格识别等理解工作, 通俗些说就是自动帮助识别图片哪些部分是图片分组, 哪些是文字, 哪些是表格等, 且提取出里面的文字和图片内容。

表格内容识别在不少业务场景,例如表格形态的机打单据,证件都有较好的识别率和应用场景。这里我们着重关注于表格内容识别,图片关键信息提取后续补充。

1.依赖安装

pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
pip install "paddleocr>=2.6.0.3" -i https://mirror.baidu.com/pypi/simple
pip install paddleclas>=2.4.3 -i https://mirror.baidu.com/pypi/simple

2.官方例子

具体的图片素材可以在 https://gitee.com/paddlepaddle/PaddleOCR/tree/release/2.6/ppstructure 下载

import os
import cv2
from paddleocr import PPStructure, draw_structure_result, save_structure_res

table_engine = PPStructure(show_log=True)
save_folder = './output'
img_path = './doc/table/table.jpg'
img = cv2.imread(img_path)
# result = table_engine(img, True)
result = table_engine(img)
save_structure_res(result, save_folder, os.path.basename(img_path).split('.')[0])

for line in result:
    line.pop('img')
    print(line)

table.jpg原始内容: 表格原始图片

当前目录输出./output/table/[6, 0, 365, 289]_0.xlsx和日志res_0.txt, 合适的表格图片识别率还是高的。 输出表格excel内容

解析API就简单一个PPStructure, 我们从日志文件可以对应到返回的result字典数据结构。 result结构

字段 说明
type 图片区域的类型
bbox 图片区域的在原图的坐标,分别[左上角x,左上角y,右下角x,右下角y]
res 图片区域的OCR或表格识别结果。表格: 一个dict,字段说明如下html: 表格的HTML字符串,在代码使用模式下,前向传入return_ocr_result_in_table=True可以拿到表格中每个文本的检测识别结果,对应为如下字段:boxes: 文本检测坐标 rec_res: 文本识别结果。OCR: 一个包含各个单行文字的检测坐标和识别结果的元组

result里面的结果默认只有html, 不大实用,一般是建议直接解析对应的type=table的excel文件, 虽然可以支持设置return_ocr_result_in_table=True返回解析内容到rec_res, 但rec_res结构化是数组, 难对应表格内容, 并且经过测试有bug.

result = table_engine(img, True)

即设置return_ocr_result_in_table=True, 就不能调用save_structure_res, 有个JSON DUMP的错误, 具体的issue已提交到 https://github.com/PaddlePaddle/PaddleOCR/issues/8611 效率很高一早就修复了。

3.总结

最后还有不少的可调参数, 可定制化需要多去摸索。

字段 说明 默认值
output 结果保存地址 ./output/table
table_max_len 表格结构模型预测时,图像的长边resize尺度 488
table_model_dir 表格结构模型 inference 模型地址 None
table_char_dict_path 表格结构模型所用字典地址 ../ppocr/utils/dict/table_structure_dict.txt
merge_no_span_structure 表格识别模型中,是否对’‘和’’ 进行合并 False
layout_model_dir 版面分析模型 inference 模型地址 None
layout_dict_path 版面分析模型字典 ../ppocr/utils/dict/layout_publaynet_dict.txt
layout_score_threshold 版面分析模型检测框阈值 0.5
layout_nms_threshold 版面分析模型nms阈值 0.5
kie_algorithm kie模型算法 LayoutXLM
ser_model_dir ser模型 inference 模型地址 None
ser_dict_path ser模型字典 ../train_data/XFUND/class_list_xfun.txt
mode structure or kie structure
image_orientation 前向中是否执行图像方向分类 False
layout 前向中是否执行版面分析 True
table 前向中是否执行表格识别 True
ocr 对于版面分析中的非表格区域,是否执行ocr。当layout为False时会被自动设置为False True
recovery 前向中是否执行版面恢复 False
save_pdf 版面恢复导出docx文件的同时,是否导出pdf文件 False
structure_version 模型版本,可选 PP-structure和PP-structurev2 PP-structure