zhch158_admin 8027967eed feat: 添加表格识别服务启动方案及增强适配器自动加载机制 1 bulan lalu
..
adapters 9304cd7f18 feat: 更新表格识别适配器,优化条件判断以支持无线表格单元格转换 1 bulan lalu
my_config 00054edc57 feat: 新增PP-StructureV3和table_recognition_v2配置文件,定义处理管线及其子模块 1 bulan lalu
sample_data 693b9315cc fix: 修改文件名大小写 3 bulan lalu
shell a5e66d5700 feat: 添加 curl_ollama.sh 和 docker_startup_7085.sh 脚本以支持 DeepOCR 服务的启动和验证码提取功能 3 bulan lalu
table_structure_recognition 221051dd07 feat: 添加Batch数据生成流程文档,详细描述数据加载和预处理过程 3 bulan lalu
utils 0be5cc4398 feat: 更新工具模块,新增PDF转换为图像功能,优化CUDA检测及Flash Attention状态检查 1 bulan lalu
评估算法说明 09c7605d5f feat: 添加 F1 Score 算法原理及应用说明文档 2 bulan lalu
OCR-zhch.yaml 8617ef4058 feat: 新增OCR管道配置文件,定义文档预处理和文本检测模块 1 bulan lalu
OmniDocBench-说明.md f1eadcb83d feat: 添加OmniDocBench评估器,支持PaddleX结果转换为OmniDocBench格式 3 bulan lalu
PP-StructureV3-说明.md b41ea9a4bb 新增文档:PP-StructureV3-说明.md,包含流水线执行流程图及关键数据传递说明 3 bulan lalu
PPStructureV3-OmniDocBench.md d1bdb0b621 feat(zhch): 实现 OmniDocBench 数据集处理和评估功能 3 bulan lalu
README.md e9103e9f2e feat: 添加macOS示例命令以支持PP-StructureV3处理 1 bulan lalu
omnidocbench_eval.py d1bdb0b621 feat(zhch): 实现 OmniDocBench 数据集处理和评估功能 3 bulan lalu
omnidocbench_parallel_eval.py e68ce9aea5 feat: 添加OmniDocBench并行评估器,支持多进程和多线程处理 3 bulan lalu
pdf2md.py 511d561c36 新增脚本:pdf2md.py,用于从PDF文件提取数据并生成Markdown文件 4 bulan lalu
ppstructure_v3_daemon.sh 14dcd1bcbc feat: 更新启动命令,使用Python脚本替代paddlex命令启动服务 1 bulan lalu
ppstructurev3_scheduler.py 977c9a94f0 fix: 移除批处理大小参数,更新默认配置以适应新的管道设置 2 bulan lalu
ppstructurev3_single_client.py bdd6d50647 feat: 更新API调用参数,调整文档方向分类和表格单元格转换设置 1 bulan lalu
ppstructurev3_single_process.py e986069da0 feat: 新增增强适配器支持,优化图像处理流程并添加相关参数 1 bulan lalu
ppstructurev3_utils.py 5febd95970 feat: 移动get_input_files函数导入位置,优化代码结构 1 bulan lalu
serve方式如何启用表格增强适配器.md 8027967eed feat: 添加表格识别服务启动方案及增强适配器自动加载机制 1 bulan lalu
tabble_recognition_post_processing_V2 bugfix.md ff03ac7b08 feat: 修复 get_html_result 行列对齐问题,使用 bisect 定位行列,增加基于单元格的结构骨架回退机制 1 bulan lalu
table_mode_selector.py 33a0ed6b69 feat: 增强智能表格处理功能,改进结果提取和边界框计算 3 bulan lalu
table_recognition_v2-说明.md b609bd4df4 feat: 优化表格识别流程,新增使用BeautifulSoup生成HTML表格的功能,并调整执行脚本示例 1 bulan lalu
table_recognition_v2_single_process.py beb4792ae0 feat: 更新示例参数,调整输入输出路径以便于演示 1 bulan lalu
test_api_call.py 50553dc55e feat: 重构测试API,添加PP-StructureV3 API支持,优化图像处理和结果保存 1 bulan lalu
test_evaluator.py a0c965a816 新增脚本:test_evaluator.py,用于强制导入注册模块并检查模型注册状态 3 bulan lalu
test_general_ocr.py de7e04a1bc feat: 新增通用OCR脚本,支持图像处理及结果保存 1 bulan lalu
test_ppstructure_v3.py 9f54e44cf5 refactor(zhch): 重构测试脚本并添加环境初始化 3 bulan lalu
test_ppstructure_v3_client.py f592aedbfb feat: 添加PP-StructureV3 API客户端,支持标准化JSON格式和批量处理功能 1 bulan lalu
test_single_model.py 642d722193 feat: 更新测试模型输入路径,支持新的数据文件位置 1 bulan lalu
test_table_recognition_v2.py ec5818bad9 新增脚本:test_table_recognition_v2.py,用于表格识别,包含模型预测和结果保存功能 4 bulan lalu
test_whister.py 62c33946d6 新增脚本:test_whister.py,用于使用whisper_small模型进行音频预测并保存结果 4 bulan lalu
智能表格识别模式选择.md 0a7c65af46 feat: Implement intelligent table recognition mode selection system 3 bulan lalu
表格识别后处理-get_table_recognition_res.md e9a37c5c95 feat: 更新表格识别适配器文档,新增适配器使用方案及解决方法 1 bulan lalu

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