zhch158_admin c4107d9e65 feat: 更新 README 文档,完善模块说明和目录结构 2 tuần trước cách đây
..
adapters 39c89d141e feat: 添加增强版文档方向分类器,结合OCR和CNN进行图像方向预测 2 tuần trước cách đây
my_config 3302bc6e20 feat: 更新布局检测模块的模型名称为RT-DETR-H_layout_17cls 2 tuần trước cách đây
sample_data 693b9315cc fix: 修改文件名大小写 3 tháng trước cách đây
shell a5e66d5700 feat: 添加 curl_ollama.sh 和 docker_startup_7085.sh 脚本以支持 DeepOCR 服务的启动和验证码提取功能 3 tháng trước cách đây
table_structure_recognition 221051dd07 feat: 添加Batch数据生成流程文档,详细描述数据加载和预处理过程 3 tháng trước cách đây
unified_pytorch_models c4107d9e65 feat: 更新 README 文档,完善模块说明和目录结构 2 tuần trước cách đây
utils cf08d39079 feat: 添加GPU内存管理功能,支持NPU和MPS设备的内存清理 3 tuần trước cách đây
评估算法说明 09c7605d5f feat: 添加 F1 Score 算法原理及应用说明文档 2 tháng trước cách đây
Model推理参数说明.md 283cba100c feat: 添加版面感知非极大值抑制(layout_nms)功能,优化重叠检测框处理 3 tuần trước cách đây
OCR-zhch.yaml 8617ef4058 feat: 新增OCR管道配置文件,定义文档预处理和文本检测模块 1 tháng trước cách đây
OSTL-说明.md f3864a45ab feat: 添加OTSL(优化表格结构语言)文档,描述其特性、应用和工作流程 3 tuần trước cách đây
OmniDocBench-说明.md f1eadcb83d feat: 添加OmniDocBench评估器,支持PaddleX结果转换为OmniDocBench格式 3 tháng trước cách đây
PP-StructureV3-说明.md b41ea9a4bb 新增文档:PP-StructureV3-说明.md,包含流水线执行流程图及关键数据传递说明 3 tháng trước cách đây
PPStructureV3-OmniDocBench.md d1bdb0b621 feat(zhch): 实现 OmniDocBench 数据集处理和评估功能 3 tháng trước cách đây
PaddleOCR-VL-说明.md 2b93a5dbb5 feat: 添加所有分类文件路径至文档说明 2 tuần trước cách đây
PaddleX设计模式.md 2d40d2ad37 feat: 添加Mixin编程模式文档,详细说明其概念、优势及实现原理 3 tuần trước cách đây
README.md 8b4e08688d feat: 移除不必要的paddlex服务启动示例代码 1 tháng trước cách đây
omnidocbench_eval.py d1bdb0b621 feat(zhch): 实现 OmniDocBench 数据集处理和评估功能 3 tháng trước cách đây
omnidocbench_parallel_eval.py e68ce9aea5 feat: 添加OmniDocBench并行评估器,支持多进程和多线程处理 3 tháng trước cách đây
paddle_vllm_daemon.sh f29c59f8fd feat: 添加PaddleOCR-VL vLLM服务守护进程脚本,支持启动、停止、状态检查和日志查看功能 1 tháng trước cách đây
paddleocr_vl_single_process.py 7a01ca54e5 feat: 更新默认配置文件路径,调整输入输出目录 2 tuần trước cách đây
pdf2md.py 511d561c36 新增脚本:pdf2md.py,用于从PDF文件提取数据并生成Markdown文件 4 tháng trước cách đây
ppstructure_v3_daemon.sh 5dcfbd34c5 使用CUDA_VISIBLE_DEVICES=7 1 tháng trước cách đây
ppstructurev3_scheduler.py 977c9a94f0 fix: 移除批处理大小参数,更新默认配置以适应新的管道设置 2 tháng trước cách đây
ppstructurev3_single_client.py ffb5c38dfe feat: 更新文档方向分类参数为启用状态,并增强Markdown内容保存功能 1 tháng trước cách đây
ppstructurev3_single_process.py 4f6565c516 feat: 更新process_images_unified函数,支持多种pipeline和可选参数 1 tháng trước cách đây
ppstructurev3_utils.py ffb5c38dfe feat: 更新文档方向分类参数为启用状态,并增强Markdown内容保存功能 1 tháng trước cách đây
serve方式如何启用表格增强适配器.md 8027967eed feat: 添加表格识别服务启动方案及增强适配器自动加载机制 1 tháng trước cách đây
sitecustomize.start_error.py 7b5bf23530 启动时会加载,但有错 1 tháng trước cách đây
start_paddlex_with_adapter.py b8061b550e serve方式启动脚本 1 tháng trước cách đây
table_mode_selector.py 33a0ed6b69 feat: 增强智能表格处理功能,改进结果提取和边界框计算 3 tháng trước cách đây
table_recognition_post_processing_V2 bugfix.md 526a4740de feat: 优化 get_html_result 函数,使用 bisect 定位行列索引,并在列数不一致时回退到基于单元格的结构骨架 1 tháng trước cách đây
table_recognition_v2-说明.md 03c75c73cb feat: 移除对公_招商银行图.pdf 执行脚本中的 --no-adapter 参数 1 tháng trước cách đây
table_recognition_v2_single_process.py 76dafcb8eb feat: 更新适配器导入方式并调整图像处理管线参数 1 tháng trước cách đây
test_api_call.py 50553dc55e feat: 重构测试API,添加PP-StructureV3 API支持,优化图像处理和结果保存 1 tháng trước cách đây
test_evaluator.py a0c965a816 新增脚本:test_evaluator.py,用于强制导入注册模块并检查模型注册状态 3 tháng trước cách đây
test_general_ocr.py de7e04a1bc feat: 新增通用OCR脚本,支持图像处理及结果保存 1 tháng trước cách đây
test_paddleocr_vl_genai-client.py 55cbeaabb3 feat: 更新PaddleOCR-VL客户端配置,调整输入路径和管道配置,添加识别类别提示词 3 tuần trước cách đây
test_ppstructure_v3.py 9f54e44cf5 refactor(zhch): 重构测试脚本并添加环境初始化 3 tháng trước cách đây
test_ppstructure_v3_client.py f592aedbfb feat: 添加PP-StructureV3 API客户端,支持标准化JSON格式和批量处理功能 1 tháng trước cách đây
test_single_model.py 6386f55ad1 feat: 更新测试模型输入路径,调整为新的样本图像 2 tuần trước cách đây
test_table_recognition_v2.py fbbcc007ad feat: 更新输入路径和配置文件路径,调整预测参数以支持无线表格单元格转 HTML 1 tháng trước cách đây
test_whister.py 62c33946d6 新增脚本:test_whister.py,用于使用whisper_small模型进行音频预测并保存结果 4 tháng trước cách đây
智能表格识别模式选择.md 0a7c65af46 feat: Implement intelligent table recognition mode selection system 3 tháng trước cách đây
模型统一框架.md be5a4742ff Add unified model framework documentation and conversion scripts for PyTorch 3 tuần trước cách đây
表格识别后处理-get_table_recognition_res.md e9a37c5c95 feat: 更新表格识别适配器文档,新增适配器使用方案及解决方法 1 tháng trước cách đây

README.md

PaddleX本地安装教程

环境选择

git clone https://gitee.com/zhch158_admin/PaddleX.git

git config --local user.name "zhch158_admin"
git config --local user.email "zhch158@sina.com"
# 自定义缓存时间(如7200秒)
git config --global credential.helper 'cache --timeout=7200'

cd PaddleX
# 安装python环境
uv venv paddle_env --python 3.11
#激活环境
source paddle_env/bin/activate

uv pip install pytest PyMuPDF

安装依赖 CPU

uv pip install paddlepaddle==3.2.0 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/
uv pip install -e .
paddlex --install PaddleOCR PaddleDetection PaddleClas  # 例如PaddleOCR
# uv pip install paddleocr==3.2.0

linux GPU - 更新版本以匹配NVML 570.169

# 首先检查NVIDIA驱动版本
nvidia-smi

# 确保驱动版本 ≥ 570.169
# 如果需要更新驱动
sudo apt update
sudo apt install nvidia-driver-570  # 或更新版本

# 安装匹配的CUDA版本(推荐12.6以匹配您的驱动)
wget https://developer.download.nvidia.com/compute/cuda/12.6.0/local_installers/cuda_12.6.0_560.28.03_linux.run
sudo sh cuda_12.6.0_560.28.03_linux.run

# 安装PaddlePaddle GPU版本
uv pip install -U --reinstall paddlepaddle-gpu==3.2.0 -i https://www.paddlepaddle.org.cn/packages/stable/cu126/
uv pip install -e .
paddlex --install PaddleOCR PaddleDetection PaddleClas

# 验证安装
python -c "import paddle; print(f'CUDA available: {paddle.device.is_compiled_with_cuda()}'); print(f'GPU count: {paddle.device.cuda.device_count()}')"

模型下载源

PaddleX 支持通过环境变量 PADDLE_PDX_MODEL_SOURCE 来指定模型下载源。根据 official_models.py 中的实现,支持以下下载源:

支持的下载源 huggingface - HuggingFace(默认优先级) modelscope - ModelScope bos - 百度云存储 aistudio - AI Studio

# 使用百度云存储源
export PADDLE_PDX_MODEL_SOURCE="bos"
python ppstructurev3_single_process.py --input_file "file.pdf" --output_dir "./output"

# 使用 ModelScope 源
export PADDLE_PDX_MODEL_SOURCE="modelscope"
python ppstructurev3_single_process.py --input_file "file.pdf" --output_dir "./output"

设置launch.json

	"configurations": [
		{
			"name": "Python Debugger: Current File",
			"type": "debugpy",
			"request": "launch",
			"program": "${file}",
			"console": "integratedTerminal",
			"cwd": "${fileDirname}",
			"env": {"PYTHONPATH":"${workspaceFolder};${env:PYTHONPATH}"},
			"envFile": "${workspaceFolder}/.env",
			"justMyCode": false
		},
		{
			"name": "pipline ppstructurev3",
			"type": "debugpy",
			"request": "launch",
			"module": "paddlex.__main__",
			// "program": "${workspaceFolder}/paddlex/paddlex_cli.py",
			"console": "integratedTerminal",
			"cwd": "${workspaceFolder}/zhch",
			"env": {"PYTHONPATH":"${workspaceFolder};${env:PYTHONPATH}"},
			"envFile": "${workspaceFolder}/.env",
			"args": [
				// "-m", "paddlex.paddlex_cli",
				// "--get_pipeline_config", "${workspaceFolder}/zhch/PP-StructureV3-zhch.yaml"
				"--pipeline", "PP-StructureV3",
				"--use_doc_orientation_classify=True",
				"--use_doc_unwarping=True",
				"--input", "sample_data/300674-母公司现金流量表-扫描.png",
				"--save_path", "sample_data/output",
				"--device", "gpu",
			],
			"justMyCode": false
		}
	]

测试样例

paddleocr ocr -i zhch/sample_data/600916_中国黄金_2002年报_83_94_2.png --save_path zhch/sample_data/output --enable_mkldnn=False  --device=cpu

# 版面分析
paddleocr layout_detection -i zhch/sample_data/600916_中国黄金_2002年报_83_94_2.png --save_path zhch/sample_data/output --model_name="PP-DocLayout_plus-L" --enable_mkldnn=False --device=cpu

# 表格解析
paddleocr table_recognition_v2 -i zhch/sample_data/600916_中国黄金_2002年报_83_94_2.png --save_path zhch/sample_data/output --device=cpu --enable_mkldnn=False

paddleocr pp_structurev3 \
  -i zhch/sample_data/600916_中国黄金_2002年报_83_94_2.png --save_path zhch/sample_data/output \
  --enable_mkldnn=False  --device=cpu
  
paddlex --pipeline table_recognition_v2 --use_doc_orientation_classify=False --use_doc_unwarping=False --input zhch/sample_data/600916_中国黄金_2002年报_83_94_2.png --save_path zhch/sample_data/output --device cpu

paddlex --pipeline table_recognition_v2 --use_doc_orientation_classify=True --use_doc_unwarping=True --input zhch/sample_data/600916_中国黄金_2002年报_83_94_2.png --save_path zhch/sample_data/output --device cpu

# 输入是PDF
paddlex --pipeline table_recognition_v2 --use_doc_orientation_classify=True --use_doc_unwarping=True --input zhch/sample_data/至远彩色印刷工业有限公司-2022年母公司.pdf --save_path zhch/sample_data/output --device cpu

macOS 查看显卡信息

# 使用 system_profiler 命令查看 GPU 信息
system_profiler SPDisplaysDataType

调试pipeline

zhch/my_config/PP-StructureV3.yaml中需要所有OCR的参数设定limit_type,limit_side_len

        SubModules:
          TextDetection:
            module_name: text_detection
            model_name: PP-OCRv5_server_det
            model_dir: null
            limit_side_len: 2560
            limit_type: max
            max_side_limit: 4000

问题分析

  1. 配置文件中印章识别是关闭的

    • PP-StructureV3.yaml 中,use_seal_recognition: False
    • 这意味着初始化时没有加载印章识别相关的模型
  2. 命令行参数冲突

    • 您使用了 --use_seal_recognition True 参数试图启用印章识别
    • 但由于初始化时没有加载相关模型,导致运行时检查失败
  3. 模型检查失败

    • _LayoutParsingPipelineV2.check_model_settings_valid 方法中检测到模型未初始化
    • 错误消息:"Set use_seal_recognition, but the models for seal recognition are not initialized."

解决方案

方案3:使用专门的印章识别管道

如果您主要需要印章识别功能,可以使用专门的印章识别管道:

paddlex --pipeline seal_recognition \
    --input sample_data/300674-母公司现金流量表-扫描.png \
    --device gpu:0 \
    --use_doc_orientation_classify False \
    --use_doc_unwarping False

完整的解决步骤

  1. 获取 PP-StructureV3 配置文件

    paddlex --get_pipeline_config PP-StructureV3 --save_path ./my_config
    
  2. 修改配置文件

    # 在 my_config/PP-StructureV3.yaml 中修改:
    use_seal_recognition: True  # 改为 True
    
  3. 使用修改后的配置文件

    paddlex --pipeline ./my_config/PP-StructureV3.yaml \
       --input sample_data/300674-母公司现金流量表-扫描.png \
       --device gpu:0
    

为什么模型目录存在但无法加载

虽然您在目录中看到了 PP-OCRv4_server_seal_det 模型文件,但问题不在于模型文件是否存在,而在于:

  1. 管道初始化阶段:根据配置文件中的 use_seal_recognition: False,管道没有初始化印章识别相关的子管道
  2. 运行时检查:当您通过参数设置 use_seal_recognition=True 时,系统检查发现相关模型未初始化,因此报错

这是 PaddleX 的设计机制,确保只有在配置文件中明确启用的功能才会被初始化和使用。

运行批量识别OmniDocBench数据集

- 只能单进程,
cd ~/zhch/PaddleX/zhch
conda activate paddle
# export PADDLE_PDX_MODEL_SOURCE="modelscope"
export PADDLE_PDX_MODEL_SOURCE="bos"

python ppstructurev3_single_process.py

python ppstructurev3_single_process.py --input_file "/home/ubuntu/zhch/data/至远彩色印刷工业有限公司/2023年度报告母公司.pdf" --output_dir "./data_PPStructureV3_Results" --pipeline "./my_config/PP-StructureV3.yaml" --device "gpu:0"

# macOS
python ppstructurev3_single_process.py --input_file "/Users/zhch158/workspace/data/至远彩色印刷工业有限公司/2023年度报告母公司.pdf" --output_dir "/Users/zhch158/workspace/data/至远彩色印刷工业有限公司/data_PPStructureV3_Results" --pipeline "./my_config/PP-StructureV3.yaml" --device "cpu"

# 安装服务
paddlex --install serving

# macOS
paddlex --serve --pipeline zhch/PP-StructureV3-zhch.yaml

# linux 10.192.72.11
# 启动ppstructure_v3增强自定义adapter服务
zhch/ppstructure_v3_daemon.sh start

# client
python ppstructurev3_single_client.py --input_file "/Users/zhch158/workspace/data/至远彩色印刷工业有限公司/2023年度报告母公司.pdf" --output_dir "/Users/zhch158/workspace/data/至远彩色印刷工业有限公司/data_PPStructureV3_Results" --api_url "http://10.192.72.11:8111/layout-parsing" --timeout 300

# client 流水分析
python ppstructurev3_single_client.py --input_file "/Users/zhch158/workspace/data/流水分析/A用户_单元格扫描流水.pdf" --output_dir "/Users/zhch158/workspace/data/流水分析/A用户_单元格扫描流水/data_PPStructureV3_Results" --api_url "http://10.192.72.11:8111/layout-parsing" --timeout 300

python ppstructurev3_single_client.py --input_file "/Users/zhch158/workspace/data/流水分析/A用户_单元格图片合成.pdf" --output_dir "/Users/zhch158/workspace/data/流水分析/A用户_单元格图片合成/data_PPStructureV3_Results" --api_url "http://10.192.72.11:8111/layout-parsing" --timeout 300

python ppstructurev3_single_client.py --input_file "/Users/zhch158/workspace/data/流水分析/B用户_扫描流水.pdf" --output_dir "/Users/zhch158/workspace/data/流水分析/B用户_扫描流水/data_PPStructureV3_Results" --api_url "http://10.192.72.11:8111/layout-parsing" --timeout 300

python ppstructurev3_single_client.py --input_file "/Users/zhch158/workspace/data/流水分析/B用户_图片合成流水.pdf" --output_dir "/Users/zhch158/workspace/data/流水分析/B用户_图片合成流水/data_PPStructureV3_Results" --api_url "http://10.192.72.11:8111/layout-parsing" --timeout 300

python ppstructurev3_single_client.py --input_file "/Users/zhch158/workspace/data/流水分析/对公_招商银行图.pdf" --output_dir "/Users/zhch158/workspace/data/流水分析/对公_招商银行图/data_PPStructureV3_Results" --api_url "http://10.192.72.11:8111/layout-parsing" --timeout 300

python ppstructurev3_single_client.py --input_file "//Users/zhch158/workspace/data/流水分析/德_内蒙古银行照.pdf" --output_dir "/Users/zhch158/workspace/data/流水分析/德_内蒙古银行照/data_PPStructureV3_Results" --api_url "http://10.192.72.11:8111/layout-parsing" --timeout 300