PaddleOCR下的PP-Structure一般用于文档图片的版面分析、表格识别等理解工作, 通俗些说就是自动帮助识别图片哪些部分是图片分组, 哪些是文字, 哪些是表格等, 且提取出里面的文字和图片内容。
表格内容识别在不少业务场景,例如表格形态的机打单据,证件都有较好的识别率和应用场景。这里我们着重关注于表格内容识别,图片关键信息提取后续补充。
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
具体的图片素材可以在 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, 合适的表格图片识别率还是高的。
解析API就简单一个PPStructure, 我们从日志文件可以对应到返回的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 效率很高一早就修复了。
最后还有不少的可调参数, 可定制化需要多去摸索。
字段 | 说明 | 默认值 |
---|---|---|
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 |
本文分享自 Hyperledger实践 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!