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 )
@@ -620,7 +620,7 @@ devanagari_PP-OCRv3_mobile_rec_infer.tar">推理模型</a>/<a href="https://padd
620
620
621
621
## 2. 快速开始
622
622
623
- 在本地使用通用版面解析v3产线前 ,请确保您已经按照[ 安装教程] ( ../ppocr/installation.md ) 完成了wheel包安装。安装完成后,可以在本地使用命令行体验或 Python 集成。
623
+ 在本地使用 PP-StructureV3 产线前 ,请确保您已经按照[ 安装教程] ( ../ppocr/installation.md ) 完成了wheel包安装。安装完成后,可以在本地使用命令行体验或 Python 集成。
624
624
625
625
### 2.1 命令行方式体验
626
626
@@ -638,6 +638,9 @@ paddleocr PP-StructureV3 -i ./pp_structure_v3_demo.png --use_doc_unwarping True
638
638
# 通过 --use_textline_orientation 指定是否使用文本行方向分类模型
639
639
paddleocr PP-StructureV3 -i ./pp_structure_v3_demo.png --use_textline_orientation False
640
640
641
+ # 通过 --use_e2e_wireless_table_rec_model 启用无线表格端到端预测模式
642
+ paddleocr PP-StructureV3 -i ./pp_structure_v3_demo.png --use_e2e_wireless_table_rec_model True
643
+
641
644
# 通过 --device 指定模型推理时使用 GPU
642
645
paddleocr PP-StructureV3 -i ./pp_structure_v3_demo.png --device gpu
643
646
```
@@ -1726,7 +1729,7 @@ for item in markdown_images:
1726
1729
1727
1730
</details >
1728
1731
1729
- <details ><summary >(2)调用版面解析产线对象的 <code >predict()</code > 方法进行推理预测,该方法会返回一个结果列表。另外,产线还提供了 <code >predict_iter()</code > 方法。两者在参数接受和结果返回方面是完全一致的,区别在于 <code >predict_iter()</code > 返回的是一个 <code >generator</code >,能够逐步处理和获取预测结果,适合处理大型数据集或希望节省内存的场景。可以根据实际需求选择使用这两种方法中的任意一种。以下是 <code >predict()</code > 方法的参数及其说明:</summary >
1732
+ <details ><summary >(2)调用 PP-StructureV3 产线对象的 <code >predict()</code > 方法进行推理预测,该方法会返回一个结果列表。另外,产线还提供了 <code >predict_iter()</code > 方法。两者在参数接受和结果返回方面是完全一致的,区别在于 <code >predict_iter()</code > 返回的是一个 <code >generator</code >,能够逐步处理和获取预测结果,适合处理大型数据集或希望节省内存的场景。可以根据实际需求选择使用这两种方法中的任意一种。以下是 <code >predict()</code > 方法的参数及其说明:</summary >
1730
1733
1731
1734
<table >
1732
1735
<thead >
@@ -2530,6 +2533,138 @@ for i, res in enumerate(result["layoutParsingResults"]):
2530
2533
2531
2534
2532
2535
## 4. 二次开发
2533
- 如果通用版面解析v3产线提供的默认模型权重在您的场景中,精度或速度不满意,您可以尝试利用<b >您自己拥有的特定领域或应用场景的数据</b >对现有模型进行进一步的<b >微调</b >,以提升通用版面解析v3产线的在您的场景中的识别效果。
2536
+ 如果 PP-StructureV3 产线提供的默认模型权重在您的场景中,精度或速度不满意,您可以尝试利用<b >您自己拥有的特定领域或应用场景的数据</b >对现有模型进行进一步的<b >微调</b >,以提升 PP-StructureV3 产线的在您的场景中的识别效果。
2537
+
2538
+ ### 4.1 模型微调
2539
+ 由于 PP-StructureV3 产线包含若干模块,模型产线的效果不及预期可能来自于其中任何一个模块。您可以对提取效果差的 case 进行分析,通过可视化图像,确定是哪个模块存在问题,并参考以下表格中对应的微调教程链接进行模型微调。
2540
+
2541
+
2542
+ <table >
2543
+ <thead >
2544
+ <tr >
2545
+ <th >情形</th >
2546
+ <th >微调模块</th >
2547
+ <th >微调参考链接</th >
2548
+ </tr >
2549
+ </thead >
2550
+ <tbody >
2551
+ <tr >
2552
+ <td >版面区域检测不准,如印章、表格未检出等</td >
2553
+ <td >版面区域检测模块</td >
2554
+ <td ><a href =" ../module_usage/layout_detection.md#四二次开发 " >链接</a ></td >
2555
+ </tr >
2556
+ <tr >
2557
+ <td >表格结构识别不准</td >
2558
+ <td >表格结构识别模块</td >
2559
+ <td ><a href =" ../module_usage/layout_detection.md#四二次开发 " >链接</a ></td >
2560
+ </tr >
2561
+ <tr >
2562
+ <td >公式识别不准</td >
2563
+ <td >公式识别模块</td >
2564
+ <td ><a href =" ../module_usage/formula_recognition.md#四二次开发 " >链接</a ></td >
2565
+ </tr >
2566
+ <tr >
2567
+ <td >印章文本存在漏检</td >
2568
+ <td >印章文本检测模块</td >
2569
+ <td ><a href =" ../module_usage/seal_text_detection.md#四二次开发 " >链接</a ></td >
2570
+ </tr >
2571
+ <tr >
2572
+ <td >文本存在漏检</td >
2573
+ <td >文本检测模块</td >
2574
+ <td ><a href =" ../module_usage/text_detection.md#四二次开发 " >链接</a ></td >
2575
+ </tr >
2576
+ <tr >
2577
+ <td >文本内容都不准</td >
2578
+ <td >文本识别模块</td >
2579
+ <td ><a href =" ../module_usage/text_recognition.md#四二次开发 " >链接</a ></td >
2580
+ </tr >
2581
+ <tr >
2582
+ <td >垂直或者旋转文本行矫正不准</td >
2583
+ <td >文本行方向分类模块</td >
2584
+ <td ><a href =" ../module_usage/text_line_orientation_classification.md#四二次开发 " >链接</a ></td >
2585
+ </tr >
2586
+ <tr >
2587
+ <td >整图旋转矫正不准</td >
2588
+ <td >文档图像方向分类模块</td >
2589
+ <td ><a href =" ../module_usage/doc_img_orientation_classification.md#四二次开发 " >链接</a ></td >
2590
+ </tr >
2591
+ <tr >
2592
+ <td >图像扭曲矫正不准</td >
2593
+ <td >文本图像矫正模块</td >
2594
+ <td >暂不支持微调</td >
2595
+ </tr >
2596
+ </tbody >
2597
+ </table >
2598
+
2599
+ ### 4.2 模型应用
2600
+ 当您使用私有数据集完成微调训练后,可获得本地模型权重文件,然后可以通过自定义产线配置文件的方式,使用微调后的模型权重。
2601
+
2602
+ 1 . 获取产线配置文件
2603
+
2604
+ 可调用 PaddleOCR 中 PPStructureV3 产线对象的 export_paddlex_config_to_yaml 方法,将当前产线配置导出为 YAML 文件:
2605
+
2606
+ ``` Python
2607
+ from paddleocr import PPStructureV3
2534
2608
2609
+ pipeline = PPStructureV3()
2610
+ pipeline.export_paddlex_config_to_yaml(" PP-StructureV3.yaml" )
2611
+ ```
2612
+
2613
+ 2 . 修改配置文件
2614
+
2615
+ 在得到默认的产线配置文件后,将微调后模型权重的本地路径替换至产线配置文件中的对应位置即可。例如
2616
+
2617
+ ``` yaml
2618
+ ......
2619
+ SubModules :
2620
+ LayoutDetection :
2621
+ module_name : layout_detection
2622
+ model_name : PP-DocLayout-L
2623
+ model_dir : null # 替换为微调后的版面区域检测模型权重路径
2624
+ ......
2625
+ SubPipelines :
2626
+ GeneralOCR :
2627
+ pipeline_name : OCR
2628
+ text_type : general
2629
+ use_doc_preprocessor : False
2630
+ use_textline_orientation : False
2631
+ SubModules :
2632
+ TextDetection :
2633
+ module_name : text_detection
2634
+ model_name : PP-OCRv4_server_det
2635
+ model_dir : null # 替换为微调后的文本测模型权重路径
2636
+ limit_side_len : 960
2637
+ limit_type : max
2638
+ max_side_limit : 4000
2639
+ thresh : 0.3
2640
+ box_thresh : 0.6
2641
+ unclip_ratio : 1.5
2642
+
2643
+ TextRecognition :
2644
+ module_name : text_recognition
2645
+ model_name : PP-OCRv4_server_rec_doc
2646
+ model_dir : null # 替换为微调后的文本识别模型权重路径
2647
+ batch_size : 1
2648
+ score_thresh : 0
2535
2649
......
2650
+ ```
2651
+
2652
+ 在产线配置文件中,不仅包含 PaddleOCR CLI 和 Python API 支持的参数,还可进行更多高级配置,具体信息可在 [ PaddleX模型产线使用概览] ( https://paddlepaddle.github.io/PaddleX/3.0/pipeline_usage/pipeline_develop_guide.html ) 中找到对应的产线使用教程,参考其中的详细说明,根据需求调整各项配置。
2653
+
2654
+ 3 . 在 CLI 中加载产线配置文件
2655
+
2656
+ 在修改完成配置文件后,通过命令行的 --paddlex_config 参数指定修改后的产线配置文件的路径,PaddleOCR 会读取其中的内容作为产线配置。示例如下:
2657
+
2658
+ ``` bash
2659
+ paddleocr ocr --paddlex_config PP-StructureV3.yaml ...
2660
+ ```
2661
+
2662
+ 4 . 在 Python API 中加载产线配置文件
2663
+
2664
+ 初始化产线对象时,可通过 paddlex_config 参数传入 PaddleX 产线配置文件路径或配置字典,PaddleOCR 会读取其中的内容作为产线配置。示例如下:
2665
+
2666
+ ``` python
2667
+ from paddleocr import PPStructureV3
2668
+
2669
+ pipeline = PPStructureV3(paddlex_config = " PP-StructureV3.yaml" )
2670
+ ```
0 commit comments