README.md 9.5 KB

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.1.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.1.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.1.1 -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

问题分析

  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
nohup paddlex --serve --port 8111 --device "gpu:3" --pipeline zhch/my_config/PP-StructureV3.yaml &

# 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