🧑 博主简介:曾任某智慧城市类企业
算法总监,目前在美国市场的物流公司从事高级算法工程师一职,深耕人工智能领域,精通python数据挖掘、可视化、机器学习等,发表过AI相关的专利并多次在AI类比赛中获奖。CSDN人工智能领域的优质创作者,提供AI相关的技术咨询、项目开发和个性化解决方案等服务,如有需要请站内私信或者联系任意文章底部的的VX名片(ID:xf982831907)
💬 博主粉丝群介绍:① 群内初中生、高中生、本科生、研究生、博士生遍布,可互相学习,交流困惑。② 热榜top10的常客也在群里,也有数不清的万粉大佬,可以交流写作技巧,上榜经验,涨粉秘籍。③ 群内也有职场精英,大厂大佬,可交流技术、面试、找工作的经验。④ 进群免费赠送写作秘籍一份,助你由写作小白晋升为创作大佬。⑤ 进群赠送CSDN评论防封脚本,送真活跃粉丝,助你提升文章热度。有兴趣的加文末联系方式,备注自己的CSDN昵称,拉你进群,互相学习共同进步。

【PaddleOCR】PP-StructureV3 命令行和python方式的快速运行
一、PP-StructureV3 简介
PP-StructureV3 是在通用版面解析 v1 产线基础上强化升级的新一代文档解析解决方案。它在版面区域检测、表格识别、公式识别等方面能力大幅提升,还新增了图表理解和多栏阅读顺序恢复功能,甚至能将结果转换为 Markdown 文件,极大地提升了文档数据的可用性和易用性。
二、快速开始
在本地使用 PP-StructureV3 产线前,请确保您已经按照安装教程完成了 wheel 包安装。安装完成后,可以在本地使用命令行体验或 Python 集成。
2.1 命令行方式体验
一行命令即可快速体验 PP-StructureV3 产线效果:
paddleocr pp_structurev3 -i https://paddle-model-ecology.bj.bcebos.com/paddlex/imgs/demo_image/pp_structure_v3_demo.png
通过参数调整功能:
# 通过 --use_doc_orientation_classify 指定是否使用文档方向分类模型
paddleocr pp_structurev3 -i ./pp_structure_v3_demo.png --use_doc_orientation_classify True
# 通过 --use_doc_unwarping 指定是否使用文本图像矫正模块
paddleocr pp_structurev3 -i ./pp_structure_v3_demo.png --use_doc_unwarping True
# 通过 --use_textline_orientation 指定是否使用文本行方向分类模型
paddleocr pp_structurev3 -i ./pp_structure_v3_demo.png --use_textline_orientation False
# 通过 --device 指定模型推理时使用 GPU
paddleocr pp_structurev3 -i ./pp_structure_v3_demo.png --device gpu
命令行支持更多参数设置,以下是命令行参数的详细说明:
| 参数 | 参数说明 | 参数类型 | 默认值 |
|---|---|---|---|
| input | 待预测数据,必填。支持多种输入类型,如图像文件、PDF 文件的本地路径或 URL 链接。 | str | 无 |
| save_path | 指定推理结果文件保存的路径。如果不设置,推理结果将不会保存到本地。 | str | 无 |
| layout_detection_model_name | 版面区域检测的模型名称。如果不设置,将会使用产线默认模型。 | str | None |
| layout_detection_model_dir | 版面区域检测模型的目录路径。如果不设置,将会下载官方模型。 | str | None |
| layout_threshold | 版面模型得分阈值。0-1 之间的任意浮点数。如果不设置,默认初始化为 0.5。 | float | None |
| layout_nms | 版面检测是否使用后处理 NMS。如果不设置,默认初始化为 True。 | bool | None |
| layout_unclip_ratio | 版面区域检测模型检测框的扩张系数。如果不设置,默认初始化为 1.0。 | float | None |
| layout_merge_bboxes_mode | 版面检测中模型输出的检测框的合并处理模式。如果不设置,默认初始化为 large。 | str | None |
| chart_recognition_model_name | 图表解析的模型名称。如果不设置,将会使用产线默认模型。 | str | None |
| chart_recognition_model_dir | 图表解析模型的目录路径。如果不设置,将会下载官方模型。 | str | None |
| chart_recognition_batch_size | 图表解析模型的 batch size。如果不设置,默认设置为 1。 | int | None |
| region_detection_model_name | 文档图像版面子模块检测的模型名称。如果不设置,将会使用产线默认模型。 | str | None |
| region_detection_model_dir | 文档图像版面子模块检测模型的目录路径。如果不设置,将会下载官方模型。 | str | None |
| doc_orientation_classify_model_name | 文档方向分类模型的名称。如果不设置,将会使用产线默认模型。 | str | None |
| doc_orientation_classify_model_dir | 文档方向分类模型的目录路径。如果不设置,将会下载官方模型。 | str | None |
| doc_unwarping_model_name | 文本图像矫正模型的名称。如果不设置,将会使用产线默认模型。 | str | None |
| doc_unwarping_model_dir | 文本图像矫正模型的目录路径。如果不设置,将会下载官方模型。 | str | None |
| text_detection_model_name | 文本检测模型的名称。如果不设置,将会使用产线默认模型。 | str | None |
| text_detection_model_dir | 文本检测模型的目录路径。如果不设置,将会下载官方模型。 | str | None |
| text_det_limit_side_len | 文本检测的图像边长限制。大于 0 的任意整数。如果不设置,默认初始化为 960。 | int | None |
| text_det_limit_type | 文本检测的图像边长限制类型。支持 min 和 max,默认初始化为 max。 | str | None |
| text_det_thresh | 检测像素阈值,默认初始化为 0.3。 | float | None |
| text_det_box_thresh | 检测框阈值,默认初始化为 0.6。 | float | None |
| text_det_unclip_ratio | 文本检测扩张系数,默认初始化为 2.0。 | float | None |
| textline_orientation_model_name | 文本行方向模型的名称。如果不设置,将会使用产线默认模型。 | str | None |
| textline_orientation_model_dir | 文本行方向模型的目录路径。如果不设置,将会下载官方模型。 | str | None |
| textline_orientation_batch_size | 文本行方向模型的 batch size。如果不设置,默认设置为 1。 | int | None |
| text_recognition_model_name | 文本识别模型的名称。如果不设置,将会使用产线默认模型。 | str | None |
| text_recognition_model_dir | 文本识别模型的目录路径。如果不设置,将会下载官方模型。 | str | None |
| text_recognition_batch_size | 文本识别模型的 batch size。如果不设置,默认设置为 1。 | int | None |
| text_rec_score_thresh | 文本识别阈值,默认初始化为 0.0。 | float | None |
| table_classification_model_name | 表格分类模型的名称。如果不设置,将会使用产线默认模型。 | str | None |
| table_classification_model_dir | 表格分类模型的目录路径。如果不设置,将会下载官方模型。 | str | None |
| wired_table_structure_recognition_model_name | 有线表格结构识别模型的名称。如果不设置,将会使用产线默认模型。 | str | None |
| wired_table_structure_recognition_model_dir | 有线表格结构识别模型的目录路径。如果不设置,将会下载官方模型。 | str | None |
| wireless_table_structure_recognition_model_name | 无线表格结构识别模型的名称。如果不设置,将会使用产线默认模型。 | str | None |
| wireless_table_structure_recognition_model_dir | 无线表格结构识别模型的目录路径。如果不设置,将会下载官方模型。 | str | None |
| wired_table_cells_detection_model_name | 有线表格单元格检测模型的名称。如果不设置,将会使用产线默认模型。 | str | None |
| wired_table_cells_detection_model_dir | 有线表格单元格检测模型的目录路径。如果不设置,将会下载官方模型。 | str | None |
| wireless_table_cells_detection_model_name | 无线表格单元格检测模型的名称。如果不设置,将会使用产线默认模型。 | str | None |
| wireless_table_cells_detection_model_dir | 无线表格单元格检测模型的目录路径。如果不设置,将会下载官方模型。 | str | None |
| table_orientation_classify_model_name | 表格方向分类模型的名称。如果不设置,将会使用产线默认模型。 | str | None |
| table_orientation_classify_model_dir | 表格方向分类模型的目录路径。如果不设置,将会下载官方模型。 | str | None |
| seal_text_detection_model_name | 印章文本检测模型的名称。如果不设置,将会使用产线默认模型。 | str | None |
| seal_text_detection_model_dir | 印章文本检测模型的目录路径。如果不设置,将会下载官方模型。 | str | None |
| seal_det_limit_side_len | 印章文本检测的图像边长限制。大于 0 的任意整数。如果不设置,默认初始化为 736。 | int | None |
| seal_det_limit_type | 印章文本检测的图像边长限制类型。支持 min 和 max,默认初始化为 min。 | str | None |
| seal_det_thresh | 检测像素阈值,默认初始化为 0.2。 | float | None |
| seal_det_box_thresh | 检测框阈值,默认初始化为 0.6。 | float | None |
| seal_det_unclip_ratio | 印章文本检测扩张系数,默认初始化为 0.5。 | float | None |
| seal_text_recognition_model_name | 印章文本识别模型的名称。如果不设置,将会使用产线默认模型。 | str | None |
| seal_text_recognition_model_dir | 印章文本识别模型的目录路径。如果不设置,将会下载官方模型。 | str | None |
| seal_text_recognition_batch_size | 印章文本识别模型的 batch size。如果不设置,默认设置为 1。 | int | None |
| seal_rec_score_thresh | 印章文本识别阈值,默认初始化为 0.0。 | float | None |
| formula_recognition_model_name | 公式识别模型的名称。如果不设置,将会使用产线默认模型。 | str | None |
| formula_recognition_model_dir | 公式识别模型的目录路径。如果不设置,将会下载官方模型。 | str | None |
| formula_recognition_batch_size | 公式识别模型的 batch size。如果不设置,默认设置为 1。 | int | None |
| use_doc_orientation_classify | 是否使用文档方向分类模块。 | bool | False |
| use_doc_unwarping | 是否使用文本图像矫正模块。 | bool | False |
| use_textline_orientation | 是否使用文本行方向分类模块。 | bool | True |
| use_seal_recognition | 是否使用印章文本识别子产线。 | bool | True |
| use_table_recognition | 是否使用表格识别子产线。 | bool | True |
| use_formula_recognition | 是否使用公式识别子产线。 | bool | True |
| use_chart_recognition | 是否使用图表解析模块。 | bool | False |
| use_region_detection | 是否使用文档区域检测子产线。 | bool | True |
| device | 用于推理的设备。支持指定具体卡号,默认优先使用 GPU。 | str | None |
| enable_hpi | 是否启用高性能推理。 | bool | False |
| use_tensorrt | 是否启用 TensorRT 子图引擎。 | bool | False |
| precision | 计算精度,如 fp32、fp16。 | str | “fp32” |
| enable_mkldnn | 是否启用 MKL-DNN 加速推理。 | bool | True |
| mkldnn_cache_capacity | MKL-DNN 缓存容量。 | int | 10 |
| cpu_threads | 在 CPU 上进行推理时使用的线程数。 | int | 8 |
| paddlex_config | PaddleX 产线配置文件路径。 | str | None |
2.2 Python 脚本方式集成
命令行方式是为了快速体验查看效果,一般来说,在项目中,往往需要通过代码集成,您可以通过几行代码即可完成产线的快速推理,推理代码如下:
from paddleocr import PPStructureV3
pipeline = PPStructureV3()
output = pipeline.predict("./pp_structure_v3_demo.png")
for res in output:
res.print() # 打印预测的结构化输出
res.save_to_json(save_path="output") # 保存当前图像的结构化 JSON 结果
res.save_to_markdown(save_path="output") # 保存当前图像的 Markdown 格式的结果
如果是 PDF 文件,会将 PDF 的每一页单独处理,每一页的 Markdown 文件也会对应单独的结果。如果希望整个 PDF 文件转换为 Markdown 文件,建议使用以下的方式运行:
from pathlib import Path
from paddleocr import PPStructureV3
input_file = "./your_pdf_file.pdf"
output_path = Path("./output")
pipeline = PPStructureV3()
output = pipeline.predict(input=input_file)
markdown_list = []
markdown_images = []
for res in output:
md_info = res.markdown
markdown_list.append(md_info)
markdown_images.append(md_info.get("markdown_images", {}))
markdown_texts = pipeline.concatenate_markdown_pages(markdown_list)
mkd_file_path = output_path / f"{Path(input_file).stem}.md"
mkd_file_path.parent.mkdir(parents=True, exist_ok=True)
with open(mkd_file_path, "w", encoding="utf-8") as f:
f.write(markdown_texts)
for item in markdown_images:
if item:
for path, image in item.items():
file_path = output_path / path
file_path.parent.mkdir(parents=True, exist_ok=True)
image.save(file_path)


注:PP-StructureV3 产线使用的默认文本识别模型为中英文识别模型,对于纯英文的识别能力有限,对于全英文场景,您可以设置 text_recognition_model_name 参数为 en_PP-OCRv4_mobile_rec 等英文识别模型以取得更好的识别效果。对应其他语言场景,也可以参考前文的模型列表,选择对应的语言识别模型进行替换。
在示例代码中,use_doc_orientation_classify、use_doc_unwarping、use_textline_orientation 参数默认均设置为 False,分别表示关闭文档方向分类、文本图像矫正、文本行方向分类功能,如果需要使用这些功能,可以手动设置为 True。
236

被折叠的 条评论
为什么被折叠?



