|
@@ -26,6 +26,24 @@ python -m unittest discover testing '*_test.py' -v
|
|
make all
|
|
make all
|
|
```
|
|
```
|
|
|
|
|
|
|
|
+## 模型配置
|
|
|
|
+
|
|
|
|
+| 模型类别 | 模型名称 | 模型配置 |
|
|
|
|
+| ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- |
|
|
|
|
+| 表格结构检测 | [ch_ppstructure_mobile_v2.0_SLANet](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/ppstructure/docs/models_list.md#22-%E8%A1%A8%E6%A0%BC%E8%AF%86%E5%88%AB%E6%A8%A1%E5%9E%8B) | [./server.py](./server.py) |
|
|
|
|
+
|
|
|
|
+如果更新了模型权重,请同时修改创建镜像时的下载地址:
|
|
|
|
+
|
|
|
|
+```bash
|
|
|
|
+$ cat Dockerfile
|
|
|
|
+...
|
|
|
|
+# 模型下载地址
|
|
|
|
+RUN mkdir -p models/table && cd models/table && wget ftp://192.168.199.31/SLANet_ch/20240222/SLANet_ch.zip
|
|
|
|
+...
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+表格流程中的文本检测、文本识别我们使用了 PP-StructureV2 内建的模型。
|
|
|
|
+
|
|
## 服务实现
|
|
## 服务实现
|
|
|
|
|
|
表格识别服务的简化流程如下:
|
|
表格识别服务的简化流程如下:
|
|
@@ -56,27 +74,27 @@ make all
|
|
流程说明:
|
|
流程说明:
|
|
|
|
|
|
1. 图像方向预测和旋转。我们使用 PaddleClas 内建的图像分类器预测文本区域图片的方向,并将图片旋转为 0 度。<br>
|
|
1. 图像方向预测和旋转。我们使用 PaddleClas 内建的图像分类器预测文本区域图片的方向,并将图片旋转为 0 度。<br>
|
|
- 这是因为我们训练文本检测模型所用的文本图片方向均为 0 度(即水平方向的文字为从左向右排列,竖直方向的文本为从上向下排列)。
|
|
|
|
|
|
+ 这是因为我们训练文本检测模型所用的文本图片方向均为 0 度(即水平方向的文字为从左向右排列,竖直方向的文本为从上向下排列)。
|
|
|
|
|
|
- 源码:[./server.py#rotate_to_zero](./server.py#rotate_to_zero)
|
|
|
|
|
|
+ 源码:[./server.py#rotate_to_zero](./server.py#rotate_to_zero)
|
|
|
|
|
|
-2. 表格结构预测。将0度方向图片输入表格结构预测模型,得到表格 Cell 检测框列表。
|
|
|
|
|
|
+2. 表格结构预测。将 0 度方向图片输入表格结构预测模型,得到表格 Cell 检测框列表。
|
|
|
|
|
|
- 源码:[PaddleOCR/ppstructure/table/predict_table.py#L108](https://github.com/PaddlePaddle/PaddleOCR/blob/69832ab5326c6db614af6fb74b530aeae1c9b80e/ppstructure/table/predict_table.py#L108)
|
|
|
|
|
|
+ 源码:[PaddleOCR/ppstructure/table/predict_table.py#L108](https://github.com/PaddlePaddle/PaddleOCR/blob/69832ab5326c6db614af6fb74b530aeae1c9b80e/ppstructure/table/predict_table.py#L108)
|
|
|
|
|
|
-3. 文本检测和识别。将0度方向的图片输入文本检测模型,得到文本检测框并裁剪出图像,将文本图像输入文本识别模型,得到文本识别结果。
|
|
|
|
|
|
+3. 文本检测和识别。将 0 度方向的图片输入文本检测模型,得到文本检测框并裁剪出图像,将文本图像输入文本识别模型,得到文本识别结果。
|
|
|
|
|
|
- 源码:[PaddleOCR/ppstructure/table/predict_table.py#L112](https://github.com/PaddlePaddle/PaddleOCR/blob/69832ab5326c6db614af6fb74b530aeae1c9b80e/ppstructure/table/predict_table.py#L112)
|
|
|
|
|
|
+ 源码:[PaddleOCR/ppstructure/table/predict_table.py#L112](https://github.com/PaddlePaddle/PaddleOCR/blob/69832ab5326c6db614af6fb74b530aeae1c9b80e/ppstructure/table/predict_table.py#L112)
|
|
|
|
|
|
4. 文本聚合。根据表格 Cell 检测框和文本检测框的坐标,聚合文本,得到包含表格结构和内容的识别结果。
|
|
4. 文本聚合。根据表格 Cell 检测框和文本检测框的坐标,聚合文本,得到包含表格结构和内容的识别结果。
|
|
|
|
|
|
- 源码:[PaddleOCR/ppstructure/table/predict_table.py#L100](https://github.com/PaddlePaddle/PaddleOCR/blob/69832ab5326c6db614af6fb74b530aeae1c9b80e/ppstructure/table/predict_table.py#L100)
|
|
|
|
|
|
+ 源码:[PaddleOCR/ppstructure/table/predict_table.py#L100](https://github.com/PaddlePaddle/PaddleOCR/blob/69832ab5326c6db614af6fb74b530aeae1c9b80e/ppstructure/table/predict_table.py#L100)
|
|
|
|
|
|
5. 重新识别(流程图上未表示)。我们会对表格的识别结果评分,若表格识别结果评分较低,则对表格区域图片进行一些预处理后重复上述识别流程。
|
|
5. 重新识别(流程图上未表示)。我们会对表格的识别结果评分,若表格识别结果评分较低,则对表格区域图片进行一些预处理后重复上述识别流程。
|
|
|
|
|
|
- 源码:[./cores/check_table.py](./cores/check_table.py)
|
|
|
|
|
|
+ 源码:[./cores/check_table.py](./cores/check_table.py)
|
|
|
|
|
|
参考:
|
|
参考:
|
|
|
|
|
|
- [PaddleOCR-表格识别流程](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/ppstructure/table/README_ch.md)
|
|
- [PaddleOCR-表格识别流程](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/ppstructure/table/README_ch.md)
|
|
-- [PaddleOCR-表格识别模型全流程指南](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/table_recognition.md)
|
|
|
|
|
|
+- [PaddleOCR-表格识别模型全流程指南](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_ch/table_recognition.md)
|