2
2
comments : true
3
3
---
4
4
5
- # 通用版面解析v3产线使用教程
5
+ # PP-StructureV3 产线使用教程
6
6
7
- ## 1. 通用版面解析v3( PP-StructureV3) 产线介绍
7
+ ## 1. PP-StructureV3 产线介绍
8
8
9
- 版面解析是一种从文档图像中提取结构化信息的技术,主要用于将复杂的文档版面转换为机器可读的数据格式。这项技术在文档管理、信息提取和数据数字化等领域具有广泛的应用。版面解析通过结合光学字符识别(OCR)、图像处理和机器学习算法,能够识别和提取文档中的文本块、标题、段落、图片、表格以及其他版面元素。此过程通常包括版面分析、元素分析和数据格式化三个主要步骤,最终生成结构化的文档数据,提升数据处理的效率和准确性。<b>通用版面解析v3产线在通用版面解析v1产线的基础上 ,强化了版面区域检测、表格识别、公式识别的能力,增加了多栏阅读顺序的恢复能力、结果转换 Markdown 文件的能力,在多种文档数据中,表现优异,可以处理较复杂的文档数据。</b>本产线同时提供了灵活的服务化部署方式,支持在多种硬件上使用多种编程语言调用。不仅如此,本产线也提供了二次开发的能力,您可以基于本产线在您自己的数据集上训练调优,训练后的模型也可以无缝集成。
9
+ 版面解析是一种从文档图像中提取结构化信息的技术,主要用于将复杂的文档版面转换为机器可读的数据格式。这项技术在文档管理、信息提取和数据数字化等领域具有广泛的应用。版面解析通过结合光学字符识别(OCR)、图像处理和机器学习算法,能够识别和提取文档中的文本块、标题、段落、图片、表格以及其他版面元素。此过程通常包括版面分析、元素分析和数据格式化三个主要步骤,最终生成结构化的文档数据,提升数据处理的效率和准确性。<b>PP-StructureV3 产线在通用版面解析v1产线的基础上 ,强化了版面区域检测、表格识别、公式识别的能力,增加了多栏阅读顺序的恢复能力、结果转换 Markdown 文件的能力,在多种文档数据中,表现优异,可以处理较复杂的文档数据。</b>本产线同时提供了灵活的服务化部署方式,支持在多种硬件上使用多种编程语言调用。不仅如此,本产线也提供了二次开发的能力,您可以基于本产线在您自己的数据集上训练调优,训练后的模型也可以无缝集成。
10
10
11
- <b >通用版面解析v3产线中包含以下6个模块 。每个模块均可独立进行训练和推理,并包含多个模型。有关详细信息,请点击相应模块以查看文档。</b >
11
+ <b >PP-StructureV3 产线中包含以下6个模块 。每个模块均可独立进行训练和推理,并包含多个模型。有关详细信息,请点击相应模块以查看文档。</b >
12
12
13
13
- [ 版面区域检测模块] ( ../module_usage/layout_detection.md )
14
14
- [ 通用OCR子产线] ( ./OCR.md )
@@ -186,7 +186,7 @@ comments: true
186
186
<th >检测Hmean(%)</th >
187
187
<th >GPU推理耗时(ms)<br />[常规模式 / 高性能模式]</th >
188
188
<th >CPU推理耗时(ms)<br />[常规模式 / 高性能模式]</th >
189
- <th >模型存储大小(M) </th >
189
+ <th >模型存储大小(M) </th >
190
190
<th >介绍</th >
191
191
</tr >
192
192
</thead >
@@ -568,7 +568,7 @@ devanagari_PP-OCRv3_mobile_rec_infer.tar">推理模型</a>/<a href="https://padd
568
568
<th >Top-1 Acc(%)</th >
569
569
<th >GPU推理耗时(ms)<br />[常规模式 / 高性能模式]</th >
570
570
<th >CPU推理耗时(ms)<br />[常规模式 / 高性能模式]</th >
571
- <th >模型存储大小(M) </th >
571
+ <th >模型存储大小(M) </th >
572
572
<th >介绍</th >
573
573
</tr >
574
574
</thead >
@@ -729,7 +729,7 @@ devanagari_PP-OCRv3_mobile_rec_infer.tar">推理模型</a>/<a href="https://padd
729
729
730
730
## 2. 快速开始
731
731
732
- 在本地使用通用版面解析v3产线前 ,请确保您已经按照[ 安装教程] ( ../ppocr/installation.md ) 完成了wheel包安装。安装完成后,可以在本地使用命令行体验或 Python 集成。
732
+ 在本地使用 PP-StructureV3 产线前 ,请确保您已经按照[ 安装教程] ( ../ppocr/installation.md ) 完成了wheel包安装。安装完成后,可以在本地使用命令行体验或 Python 集成。
733
733
734
734
### 2.1 命令行方式体验
735
735
@@ -747,6 +747,9 @@ paddleocr pp_structurev3 -i ./pp_structure_v3_demo.png --use_doc_unwarping True
747
747
# 通过 --use_textline_orientation 指定是否使用文本行方向分类模型
748
748
paddleocr pp_structurev3 -i ./pp_structure_v3_demo.png --use_textline_orientation False
749
749
750
+ # 通过 --use_e2e_wireless_table_rec_model 启用无线表格端到端预测模式
751
+ paddleocr PP-StructureV3 -i ./pp_structure_v3_demo.png --use_e2e_wireless_table_rec_model True
752
+
750
753
# 通过 --device 指定模型推理时使用 GPU
751
754
paddleocr pp_structurev3 -i ./pp_structure_v3_demo.png --device gpu
752
755
```
@@ -1835,7 +1838,7 @@ for item in markdown_images:
1835
1838
1836
1839
</details >
1837
1840
1838
- <details ><summary >(2)调用版面解析产线对象的 <code >predict()</code > 方法进行推理预测,该方法会返回一个结果列表。另外,产线还提供了 <code >predict_iter()</code > 方法。两者在参数接受和结果返回方面是完全一致的,区别在于 <code >predict_iter()</code > 返回的是一个 <code >generator</code >,能够逐步处理和获取预测结果,适合处理大型数据集或希望节省内存的场景。可以根据实际需求选择使用这两种方法中的任意一种。以下是 <code >predict()</code > 方法的参数及其说明:</summary >
1841
+ <details ><summary >(2)调用 PP-StructureV3 产线对象的 <code >predict()</code > 方法进行推理预测,该方法会返回一个结果列表。另外,产线还提供了 <code >predict_iter()</code > 方法。两者在参数接受和结果返回方面是完全一致的,区别在于 <code >predict_iter()</code > 返回的是一个 <code >generator</code >,能够逐步处理和获取预测结果,适合处理大型数据集或希望节省内存的场景。可以根据实际需求选择使用这两种方法中的任意一种。以下是 <code >predict()</code > 方法的参数及其说明:</summary >
1839
1842
1840
1843
<table >
1841
1844
<thead >
@@ -2639,6 +2642,138 @@ for i, res in enumerate(result["layoutParsingResults"]):
2639
2642
2640
2643
2641
2644
## 4. 二次开发
2642
- 如果通用版面解析v3产线提供的默认模型权重在您的场景中,精度或速度不满意,您可以尝试利用<b >您自己拥有的特定领域或应用场景的数据</b >对现有模型进行进一步的<b >微调</b >,以提升通用版面解析v3产线的在您的场景中的识别效果。
2645
+ 如果 PP-StructureV3 产线提供的默认模型权重在您的场景中,精度或速度不满意,您可以尝试利用<b >您自己拥有的特定领域或应用场景的数据</b >对现有模型进行进一步的<b >微调</b >,以提升 PP-StructureV3 产线的在您的场景中的识别效果。
2646
+
2647
+ ### 4.1 模型微调
2648
+ 由于 PP-StructureV3 产线包含若干模块,模型产线的效果不及预期可能来自于其中任何一个模块。您可以对提取效果差的 case 进行分析,通过可视化图像,确定是哪个模块存在问题,并参考以下表格中对应的微调教程链接进行模型微调。
2649
+
2650
+
2651
+ <table >
2652
+ <thead >
2653
+ <tr >
2654
+ <th >情形</th >
2655
+ <th >微调模块</th >
2656
+ <th >微调参考链接</th >
2657
+ </tr >
2658
+ </thead >
2659
+ <tbody >
2660
+ <tr >
2661
+ <td >版面区域检测不准,如印章、表格未检出等</td >
2662
+ <td >版面区域检测模块</td >
2663
+ <td ><a href =" ../module_usage/layout_detection.md#四二次开发 " >链接</a ></td >
2664
+ </tr >
2665
+ <tr >
2666
+ <td >表格结构识别不准</td >
2667
+ <td >表格结构识别模块</td >
2668
+ <td ><a href =" ../module_usage/layout_detection.md#四二次开发 " >链接</a ></td >
2669
+ </tr >
2670
+ <tr >
2671
+ <td >公式识别不准</td >
2672
+ <td >公式识别模块</td >
2673
+ <td ><a href =" ../module_usage/formula_recognition.md#四二次开发 " >链接</a ></td >
2674
+ </tr >
2675
+ <tr >
2676
+ <td >印章文本存在漏检</td >
2677
+ <td >印章文本检测模块</td >
2678
+ <td ><a href =" ../module_usage/seal_text_detection.md#四二次开发 " >链接</a ></td >
2679
+ </tr >
2680
+ <tr >
2681
+ <td >文本存在漏检</td >
2682
+ <td >文本检测模块</td >
2683
+ <td ><a href =" ../module_usage/text_detection.md#四二次开发 " >链接</a ></td >
2684
+ </tr >
2685
+ <tr >
2686
+ <td >文本内容都不准</td >
2687
+ <td >文本识别模块</td >
2688
+ <td ><a href =" ../module_usage/text_recognition.md#四二次开发 " >链接</a ></td >
2689
+ </tr >
2690
+ <tr >
2691
+ <td >垂直或者旋转文本行矫正不准</td >
2692
+ <td >文本行方向分类模块</td >
2693
+ <td ><a href =" ../module_usage/text_line_orientation_classification.md#四二次开发 " >链接</a ></td >
2694
+ </tr >
2695
+ <tr >
2696
+ <td >整图旋转矫正不准</td >
2697
+ <td >文档图像方向分类模块</td >
2698
+ <td ><a href =" ../module_usage/doc_img_orientation_classification.md#四二次开发 " >链接</a ></td >
2699
+ </tr >
2700
+ <tr >
2701
+ <td >图像扭曲矫正不准</td >
2702
+ <td >文本图像矫正模块</td >
2703
+ <td >暂不支持微调</td >
2704
+ </tr >
2705
+ </tbody >
2706
+ </table >
2643
2707
2708
+ ### 4.2 模型应用
2709
+ 当您使用私有数据集完成微调训练后,可获得本地模型权重文件,然后可以通过自定义产线配置文件的方式,使用微调后的模型权重。
2710
+
2711
+ 1 . 获取产线配置文件
2712
+
2713
+ 可调用 PaddleOCR 中 PPStructureV3 产线对象的 export_paddlex_config_to_yaml 方法,将当前产线配置导出为 YAML 文件:
2714
+
2715
+ ``` Python
2716
+ from paddleocr import PPStructureV3
2717
+
2718
+ pipeline = PPStructureV3()
2719
+ pipeline.export_paddlex_config_to_yaml(" PP-StructureV3.yaml" )
2720
+ ```
2721
+
2722
+ 2 . 修改配置文件
2723
+
2724
+ 在得到默认的产线配置文件后,将微调后模型权重的本地路径替换至产线配置文件中的对应位置即可。例如
2725
+
2726
+ ``` yaml
2727
+ ......
2728
+ SubModules :
2729
+ LayoutDetection :
2730
+ module_name : layout_detection
2731
+ model_name : PP-DocLayout-L
2732
+ model_dir : null # 替换为微调后的版面区域检测模型权重路径
2644
2733
......
2734
+ SubPipelines :
2735
+ GeneralOCR :
2736
+ pipeline_name : OCR
2737
+ text_type : general
2738
+ use_doc_preprocessor : False
2739
+ use_textline_orientation : False
2740
+ SubModules :
2741
+ TextDetection :
2742
+ module_name : text_detection
2743
+ model_name : PP-OCRv5_server_det
2744
+ model_dir : null # 替换为微调后的文本测模型权重路径
2745
+ limit_side_len : 960
2746
+ limit_type : max
2747
+ max_side_limit : 4000
2748
+ thresh : 0.3
2749
+ box_thresh : 0.6
2750
+ unclip_ratio : 1.5
2751
+
2752
+ TextRecognition :
2753
+ module_name : text_recognition
2754
+ model_name : PP-OCRv5_server_rec_doc
2755
+ model_dir : null # 替换为微调后的文本识别模型权重路径
2756
+ batch_size : 1
2757
+ score_thresh : 0
2758
+ ......
2759
+ ```
2760
+
2761
+ 在产线配置文件中,不仅包含 PaddleOCR CLI 和 Python API 支持的参数,还可进行更多高级配置,具体信息可在 [ PaddleX模型产线使用概览] ( https://paddlepaddle.github.io/PaddleX/3.0/pipeline_usage/pipeline_develop_guide.html ) 中找到对应的产线使用教程,参考其中的详细说明,根据需求调整各项配置。
2762
+
2763
+ 3 . 在 CLI 中加载产线配置文件
2764
+
2765
+ 在修改完成配置文件后,通过命令行的 --paddlex_config 参数指定修改后的产线配置文件的路径,PaddleOCR 会读取其中的内容作为产线配置。示例如下:
2766
+
2767
+ ``` bash
2768
+ paddleocr ocr --paddlex_config PP-StructureV3.yaml ...
2769
+ ```
2770
+
2771
+ 4 . 在 Python API 中加载产线配置文件
2772
+
2773
+ 初始化产线对象时,可通过 paddlex_config 参数传入 PaddleX 产线配置文件路径或配置字典,PaddleOCR 会读取其中的内容作为产线配置。示例如下:
2774
+
2775
+ ``` python
2776
+ from paddleocr import PPStructureV3
2777
+
2778
+ pipeline = PPStructureV3(paddlex_config = " PP-StructureV3.yaml" )
2779
+ ```
0 commit comments