Ei kuvausta

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

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

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

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

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

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

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

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

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

    源码:./cores/check_table.py

参考: