八、OCR系列-OCR表格识别-PP-Structure

1 参考

github:https://github.com/PaddlePaddle/PaddleOCR
gitee:https://gitee.com/AI-Mart/PaddleOCR

1.1 原理

文档图像首先经过图像矫正模块,判断整图方向并完成转正,随后可以完成版面信息分析与关键信息抽取2类任务。

八、OCR系列-OCR表格识别-PP-Structure_第1张图片

1.1.1 版面分析任务中

图像首先经过版面分析模型,将图像划分为文本、表格、图像等不同区域,随后对这些区域分别进行识别,如,将表格区域送入表格识别模块进行结构化识别,将文本区域送入OCR引擎进行文字识别,最后使用版面恢复模块将其恢复为与原始图像布局一致的word或者pdf格式的文件;

1.1.2 关键信息抽取任务中

首先使用OCR引擎提取文本内容,然后由语义实体识别模块获取图像中的语义实体,最后经关系抽取模块获取语义实体之间的对应关系,从而提取需要的关键信息。

第一条路径:
图像分类+图像目标检测+图像实体识别(纯表格识别html格式)
第二条路径:
图像分类+图像目标检测+OCR识别(文本检测,文本识别)
以上两条路径识别后经过 版面复原模块 进行合并,即可复原原本结构

第三条路径:
图像分类+OCR识别(文本检测,文本识别)+多模态实体抽取+多模态关系抽取

1.1.3 表格识别

文字目标检测+文字识别
表格目标检测

单行文本检测-DB
单行文本识别-CRNN
表格结构和cell坐标预测-SLANet

图片由单行文字检测模型检测到单行文字的坐标,然后送入识别模型拿到识别结果。
图片由SLANet模型拿到表格的结构信息和单元格的坐标信息。
由单行文字的坐标、识别结果和单元格的坐标一起组合出单元格的识别结果。
单元格的识别结果和表格结构一起构造表格的html字符串。

2 运行,版面分析任务

2.1 安装PaddleOCR whl包

# 安装 paddleocr,推荐使用2.6版本
pip3 install paddleocr

# 安装 图像方向分类依赖包paddleclas(如不需要图像方向分类功能,可跳过)
pip3 install paddleclas

2.2 图像方向分类+版面分析+表格识别

paddleocr --image_dir=xf.png --type=structure --image_orientation=true

2.3 版面分析+表格识别

paddleocr --image_dir=xf.png --type=structure

2.4 版面分析

paddleocr --image_dir=xf.png --type=structure --table=false --ocr=false

2.5 表格识别–效果最好

paddleocr --image_dir=xf.png --type=structure --layout=false

2.6 图像方向分类+表格识别–效果最好

paddleocr --image_dir=xf.png --type=structure --layout=false --image_orientation=true

2.7 版面恢复 OCR技术

paddleocr --image_dir=xf.png --type=structure --recovery=true

3 运行,关键信息抽取任务

3.1 下载工程

git clone https://github.com/PaddlePaddle/PaddleOCR.git
cd PaddleOCR
pip install -r requirements.txt
pip install -r ppstructure/kie/requirements.txt
# 安装PaddleOCR引擎用于预测
pip install paddleocr -U

3.2 下载模型

mkdir pretrained_model
cd pretrained_model
# 下载并解压SER预训练模型
wget https://paddleocr.bj.bcebos.com/ppstructure/models/vi_layoutxlm/ser_vi_layoutxlm_xfund_pretrained.tar && tar -xf ser_vi_layoutxlm_xfund_pretrained.tar

# 下载并解压RE预训练模型
wget https://paddleocr.bj.bcebos.com/ppstructure/models/vi_layoutxlm/re_vi_layoutxlm_xfund_pretrained.tar && tar -xf re_vi_layoutxlm_xfund_pretrained.tar

3.3 基于动态图,预测

cd ..

# 仅预测SER模型
python3 tools/infer_kie_token_ser.py \
  -c configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml \
  -o Architecture.Backbone.checkpoints=./pretrained_model/ser_vi_layoutxlm_xfund_pretrained/best_accuracy \
  Global.infer_img=../xf.png

# SER + RE模型串联
python3 ./tools/infer_kie_token_ser_re.py \
  -c configs/kie/vi_layoutxlm/re_vi_layoutxlm_xfund_zh.yml \
  -o Architecture.Backbone.checkpoints=./pretrained_model/re_vi_layoutxlm_xfund_pretrained/best_accuracy \
  Global.infer_img=../xf.pngg \
  -c_ser configs/kie/vi_layoutxlm/ser_vi_layoutxlm_xfund_zh.yml \
  -o_ser Architecture.Backbone.checkpoints=./pretrained_model/ser_vi_layoutxlm_xfund_pretrained/best_accuracy

3.4 基于PaddleInference的预测

3.4.1 下载模型

mkdir inference
cd inference
wget https://paddleocr.bj.bcebos.com/ppstructure/models/vi_layoutxlm/ser_vi_layoutxlm_xfund_infer.tar && tar -xf ser_vi_layoutxlm_xfund_infer.tar
wget https://paddleocr.bj.bcebos.com/ppstructure/models/vi_layoutxlm/re_vi_layoutxlm_xfund_infer.tar && tar -xf re_vi_layoutxlm_xfund_infer.tar
cd ..

3.4.2 SER预测

cd ppstructure
python3 kie/predict_kie_token_ser.py \
  --kie_algorithm=LayoutXLM \
  --ser_model_dir=../inference/ser_vi_layoutxlm_xfund_infer \
  --image_dir=../xf.png \
  --ser_dict_path=../train_data/XFUND/class_list_xfun.txt \
  --vis_font_path=../doc/fonts/simfang.ttf \
  --ocr_order_method="tb-yx"

3.4.3 RE预测

python3 kie/predict_kie_token_ser_re.py \
  --kie_algorithm=LayoutXLM \
  --re_model_dir=../inference/re_vi_layoutxlm_xfund_infer \
  --ser_model_dir=../inference/ser_vi_layoutxlm_xfund_infer \
  --use_visual_backbone=False \
  --image_dir=../xf.png \
  --ser_dict_path=../train_data/XFUND/class_list_xfun.txt \
  --vis_font_path=../doc/fonts/simfang.ttf \
  --ocr_order_method="tb-yx"

你可能感兴趣的:(笔记,工具,其他)