问题描述:
最近使用yolo识别表格,之后使用PP-structure进行表格的文本识别,并且通过save_structure_res来保存表格识别的excel信息,但是发现有些表格没有保存成excel,只生成了res_0.txt,打开res_0.txt发现type='figure'。
原因:
因为PP-Structure会进行版面分析,PP-Structure默认的版面分析模型会识别多种类型,人类所认为的表格机器不一定会识别成表格。
解决办法:
1、替换PP-Structure的版面分析模型为表格识别模型。
table_name = file.split(".")[0]
save_folder = table_folder_path
img = cv2.imread(table_path)
result = table_engine(img)
# 保存 OCR 结果
save_structure_res(result, save_folder, table_name)
table_engine = PPStructure(
use_gpu=False,
show_log=True,
lang='ch',
layout_model_dir='new_model/layout/picodet_lcnet_x1_0_fgd_layout_table_infer',
layout_url='new_model/layout/layout_table_dict.txt',
)
替换layout_model_dir为picodet_lcnet_x1_0_fgd_layout_table_infer模型,下载路径为:
https://gitee.com/paddlepaddle/PaddleOCR/blob/release/2.7/ppstructure/docs/models_list.md
layout_url为layout_table_dict.txt,下载路径为:
https://gitee.com/paddlepaddle/PaddleOCR/blob/release/2.7/ppocr/utils/dict/layout_dict/layout_table_dict.txt
2、进行完上述步骤后发现所有表格都没有保存excel,还需要修改predict_system.py,我的是在以下路径:
修改第127行table为text
修改第201行table为text
这样就会发现所有的表格都保存了excel。我猜测可能会有些表格识别不出来,暂时未遇到(这是因为我提前使用了yolo进行了表格识别)