|
@@ -1,15 +1,10 @@
|
|
|
|
|
|
# 表格识别
|
|
|
|
|
|
-基于paddleocr v2, 用于识别表格。
|
|
|
+基于 paddleocr v2, 用于识别表格。
|
|
|
|
|
|
## 环境
|
|
|
|
|
|
-- python >= 3.7
|
|
|
-- paddleocr
|
|
|
-- paddlepaddle
|
|
|
-- cv2
|
|
|
-
|
|
|
```shell
|
|
|
conda env create -f environment.yml
|
|
|
```
|
|
@@ -31,4 +26,58 @@ python server.py --port 8080
|
|
|
|
|
|
```shell
|
|
|
make all
|
|
|
-```
|
|
|
+```
|
|
|
+
|
|
|
+## 服务实现
|
|
|
+
|
|
|
+表格识别服务的简化流程如下:
|
|
|
+
|
|
|
+```text
|
|
|
+表格区域图片
|
|
|
+ |
|
|
|
+ | (图像方向预测 + 旋转)
|
|
|
+ v
|
|
|
+0度方向的图片 -----------------------+
|
|
|
+ | |
|
|
|
+ | (表格结构预测) | (文本检测)
|
|
|
+ v v
|
|
|
+表格Cell检测框集 文本检测框集
|
|
|
+ | |
|
|
|
+ | | (图片裁剪 + 文本识别)
|
|
|
+ | v
|
|
|
+ | 文本识别结果集
|
|
|
+ | |
|
|
|
+ | |
|
|
|
+ +------------------------------+
|
|
|
+ |
|
|
|
+ | (根据Cell检测框和文本检测框坐标,聚合文本)
|
|
|
+ v
|
|
|
+ 表格识别结果
|
|
|
+```
|
|
|
+
|
|
|
+流程说明:
|
|
|
+
|
|
|
+1. 图像方向预测和旋转。我们使用 PaddleClas 内建的图像分类器预测文本区域图片的方向,并将图片旋转为 0 度。<br>
|
|
|
+ 这是因为我们训练文本检测模型所用的文本图片方向均为 0 度(即水平方向的文字为从左向右排列,竖直方向的文本为从上向下排列)。
|
|
|
+
|
|
|
+ 源码:[./server.py#rotate_to_zero](./server.py#rotate_to_zero)
|
|
|
+
|
|
|
+2. 表格结构预测。将0度方向图片输入表格结构预测模型,得到表格 Cell 检测框列表。
|
|
|
+
|
|
|
+ 源码:[PaddleOCR/ppstructure/table/predict_table.py#L108](https://github.com/PaddlePaddle/PaddleOCR/blob/69832ab5326c6db614af6fb74b530aeae1c9b80e/ppstructure/table/predict_table.py#L108)
|
|
|
+
|
|
|
+3. 文本检测和识别。将0度方向的图片输入文本检测模型,得到文本检测框并裁剪出图像,将文本图像输入文本识别模型,得到文本识别结果。
|
|
|
+
|
|
|
+ 源码:[PaddleOCR/ppstructure/table/predict_table.py#L112](https://github.com/PaddlePaddle/PaddleOCR/blob/69832ab5326c6db614af6fb74b530aeae1c9b80e/ppstructure/table/predict_table.py#L112)
|
|
|
+
|
|
|
+4. 文本聚合。根据表格 Cell 检测框和文本检测框的坐标,聚合文本,得到包含表格结构和内容的识别结果。
|
|
|
+
|
|
|
+ 源码:[PaddleOCR/ppstructure/table/predict_table.py#L100](https://github.com/PaddlePaddle/PaddleOCR/blob/69832ab5326c6db614af6fb74b530aeae1c9b80e/ppstructure/table/predict_table.py#L100)
|
|
|
+
|
|
|
+5. 重新识别(流程图上未表示)。我们会对表格的识别结果评分,若表格识别结果评分较低,则对表格区域图片进行一些预处理后重复上述流程识别表格图片。
|
|
|
+
|
|
|
+ 源码:[./cores/check_table.py](./cores/check_table.py)
|
|
|
+
|
|
|
+参考:
|
|
|
+
|
|
|
+- [PaddleOCR-表格识别](https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/ppstructure/table/README_ch.md)
|