Sin descripción

jingze_cheng e32ef91d9a docs: 更新README hace 7 meses
cores ef2cfba8ba 效果差重新识别逻辑修改 hace 8 meses
deploy de826a378f 更新 'deploy/Jenkinsfile' hace 10 meses
images 4c4c33444e 增加模型,修改测试 hace 2 años
models a60e590093 feat: 915 model hace 1 año
sx_utils aeb0dca2fb 添加注释 hace 9 meses
testing 0e62fb7a79 fix: 回退829 hace 1 año
.gitignore 3658b1af2b init hace 2 años
Dockerfile be92760c62 chore: 更新表格结构预测模型版本 hace 8 meses
Makefile cddea5c0f0 rollback hace 1 año
README.md e32ef91d9a docs: 更新README hace 7 meses
cpu.Dockerfile 3658b1af2b init hace 2 años
docker-compose.yml e0ee86f2ac update docker-compose hace 8 meses
environment.yml 3cf46d5612 fix: 加入方向判断 hace 1 año
kubeconfig-sxkj 70a7d30c6c fix: Dockerfile hace 1 año
kubeconfig-sxkjprod 70a7d30c6c fix: Dockerfile hace 1 año
run.py d046d2d764 fix model_dir, add en_ppocr_table_model hace 2 años
server.py ef2cfba8ba 效果差重新识别逻辑修改 hace 8 meses

README.md

表格识别

基于 PaddleOCR PP-StructureV2, 用于识别表格。

环境

conda env create -f environment.yml

服务端

python run.py --port 8080

单元测试

python -m unittest discover testing '*_test.py' -v

镜像打包

make all

模型配置

模型类别 模型名称 模型配置
表格结构检测 ch_ppstructure_mobile_v2.0_SLANet ./server.py

如果更新了模型权重,请同时修改创建镜像时的下载地址:

$ cat Dockerfile
...
# 模型下载地址
RUN mkdir -p models/table && cd models/table && wget ftp://192.168.199.31/SLANet_ch/20240222/SLANet_ch.zip
...

表格流程中的文本检测、文本识别我们使用了 PP-StructureV2 内建的模型。

模型训练

请参考:表格模型训练与评估

服务实现

表格识别服务的简化流程如下:

表格区域图片
    |
    | (图像方向预测 + 旋转)
    v
0度方向的图片 -----------------------+
    |                              |
    | (表格结构预测)                 | (文本检测)
    v                              v
表格Cell检测框集                 文本检测框集
    |                              |
    |                              | (图片裁剪 + 文本识别)
    |                              v
    |                         文本识别结果集
    |                              |
    |                              |
    +------------------------------+
                   |
                   | (根据Cell检测框和文本检测框坐标,聚合文本)
                   v
               表格识别结果

流程说明:

  1. 图像方向预测和旋转。我们使用 PaddleClas 内建的图像分类器预测文本区域图片的方向,并将图片旋转为 0 度。
    这是因为我们训练文本检测模型所用的文本图片方向均为 0 度(即水平方向的文字为从左向右排列,竖直方向的文本为从上向下排列)。

源码:./server.py#rotate_to_zero

  1. 表格结构预测。将 0 度方向图片输入表格结构预测模型,得到表格 Cell 检测框列表。

源码:PaddleOCR/ppstructure/table/predict_table.py#L108

  1. 文本检测和识别。将 0 度方向的图片输入文本检测模型,得到文本检测框并裁剪出图像,将文本图像输入文本识别模型,得到文本识别结果。

源码:PaddleOCR/ppstructure/table/predict_table.py#L112

  1. 文本聚合。根据表格 Cell 检测框和文本检测框的坐标,聚合文本,得到包含表格结构和内容的识别结果。

源码:PaddleOCR/ppstructure/table/predict_table.py#L100

  1. 重新识别(流程图上未表示)。我们会对表格的识别结果评分,若表格识别结果评分较低,则对表格区域图片进行一些预处理后重复上述识别流程。

源码:./cores/check_table.py

参考: