PaddleOCR 安装和使用指南
快速开始
1. 安装依赖
Windows 系统
# 1. 安装 Python 包
pip install paddlepaddle paddleocr pdf2image pillow
# 2. 安装 Poppler (PDF 转图片需要)
# 下载地址: https://github.com/oschwartz10612/poppler-windows/releases
# 下载 poppler-xx.xx.x_x64.zip
# 解压到 C:\Program Files\poppler
# 将 C:\Program Files\poppler\Library\bin 添加到系统 PATH
# 或者使用 Chocolatey 安装:
choco install poppler
Linux 系统
# 1. 安装 Python 包
pip install paddlepaddle paddleocr pdf2image pillow
# 2. 安装 Poppler
# Ubuntu/Debian:
sudo apt-get install poppler-utils
# CentOS/RHEL:
sudo yum install poppler-utils
macOS 系统
# 1. 安装 Python 包
pip install paddlepaddle paddleocr pdf2image pillow
# 2. 安装 Poppler
brew install poppler
2. 使用脚本
基本用法
# 处理 PDF 文件(自动生成知识库 ID)
python scripts/reprocess_pdf_with_paddleocr.py "path/to/document.pdf"
# 指定知识库 ID
python scripts/reprocess_pdf_with_paddleocr.py "path/to/document.pdf" --kb-id f7cdefb77b24
高级选项
# 高分辨率识别(更慢但更准确)
python scripts/reprocess_pdf_with_paddleocr.py document.pdf --dpi 400
# 调整分块大小
python scripts/reprocess_pdf_with_paddleocr.py document.pdf --chunk-size 1200 --overlap 150
# 日文文档识别
python scripts/reprocess_pdf_with_paddleocr.py japanese_book.pdf --lang japan
# CPU 模式(无 GPU)
python scripts/reprocess_pdf_with_paddleocr.py document.pdf --no-gpu
3. 完整工作流
# Step 1: OCR 识别 PDF
python scripts/reprocess_pdf_with_paddleocr.py "知日·日本茶道完全入门.pdf" --kb-id f7cdefb77b24
# Step 2: 验证质量
python scripts/check_kb_quality.py
# Step 3: 生成向量(如果质量达标)
python scripts/regenerate_vectors.py f7cdefb77b24
# Step 4: 在 knowledge_bases/experts/index.json 中启用专家
# 设置 "enabled": true
# Step 5: 在 knowledge_bases/permissions.json 中启用权限
# 设置 "enabled": true
# Step 6: 重启服务
docker-compose restart mbe-api
# Step 7: 测试专家回答
# 访问 https://mbe.hi-maker.com/ 测试
参数说明
| 参数 | 默认值 | 说明 |
|---|---|---|
pdf_path |
必填 | PDF 文件路径 |
--kb-id |
文件名 | 知识库 ID |
--dpi |
300 | 图片分辨率(200-600) |
--chunk-size |
1000 | 每块字符数(500-2000) |
--overlap |
100 | 块间重叠(50-200) |
--lang |
ch | OCR 语言 |
--no-gpu |
False | 禁用 GPU |
DPI 选择建议
- 200 DPI: 快速识别,适合文本清晰的文档
- 300 DPI: 推荐,平衡速度和质量
- 400-600 DPI: 慢速高质量,适合扫描版或模糊文档
分块大小建议
- 500-800: 适合短问答、片段检索
- 1000-1200: 推荐,适合大多数场景
- 1500-2000: 适合长文档、完整段落
支持的语言
PaddleOCR 支持 80+ 种语言:
| 语言 | 代码 | 示例 |
|---|---|---|
| 简体中文 | ch |
默认 |
| 英文 | en |
--lang en |
| 繁体中文 | chinese_cht |
--lang chinese_cht |
| 日文 | japan |
--lang japan |
| 韩文 | korean |
--lang korean |
| 法文 | french |
--lang french |
| 德文 | german |
--lang german |
| 俄文 | cyrillic |
--lang cyrillic |
完整列表: https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/doc/doc_en/multi_languages_en.md
性能优化
GPU 加速
检查 GPU 是否可用:
import paddle
print(f"GPU 可用: {paddle.is_compiled_with_cuda()}")
print(f"GPU 数量: {paddle.device.cuda.device_count()}")
配置 GPU:
# 使用特定 GPU
export CUDA_VISIBLE_DEVICES=0
# 禁用 GPU(使用 CPU)
python scripts/reprocess_pdf_with_paddleocr.py document.pdf --no-gpu
处理速度参考
以一本 200 页的中文书为例:
| 配置 | DPI | 速度 |
|---|---|---|
| CPU (8核) | 300 | ~30-40 分钟 |
| GPU (RTX 3060) | 300 | ~8-12 分钟 |
| GPU (RTX 4090) | 300 | ~4-6 分钟 |
| GPU (RTX 3060) | 400 | ~15-20 分钟 |
常见问题
1. Poppler 未找到
错误:
PDFInfoNotInstalledError: Unable to get page count. Is poppler installed and in PATH?
解决:
- Windows: 下载 Poppler,添加到 PATH
- Linux:
sudo apt-get install poppler-utils - macOS:
brew install poppler
2. 内存不足
错误:
MemoryError: Unable to allocate array
解决:
# 降低 DPI
python scripts/reprocess_pdf_with_paddleocr.py document.pdf --dpi 200
# 或者分批处理(需要手动拆分 PDF)
3. GPU 内存不足
错误:
Out of memory error
解决:
# 使用 CPU 模式
python scripts/reprocess_pdf_with_paddleocr.py document.pdf --no-gpu
4. 识别质量差
问题: 识别出很多乱码或错误
解决:
# 1. 提高分辨率
python scripts/reprocess_pdf_with_paddleocr.py document.pdf --dpi 400
# 2. 确认语言设置正确
python scripts/reprocess_pdf_with_paddleocr.py document.pdf --lang japan
# 3. 检查原始 PDF 质量
# 如果原始 PDF 是扫描版且质量很差,可能需要:
# - 使用商业 OCR (腾讯云/阿里云)
# - 寻找更高质量的 PDF 版本
# - 手动录入核心内容
5. 处理很慢
问题: 一本书要处理几个小时
解决:
# 1. 确保使用 GPU
python scripts/reprocess_pdf_with_paddleocr.py document.pdf
# 应该显示: 初始化 PaddleOCR (GPU: True, ...)
# 2. 降低分辨率
python scripts/reprocess_pdf_with_paddleocr.py document.pdf --dpi 250
# 3. 使用更快的 GPU 或云服务
输出文件说明
处理完成后会生成以下文件:
knowledge_bases/
├── f7cdefb77b24_chunks.json # 分块数据(主文件)
├── f7cdefb77b24_chunks.json.backup_* # 原文件备份
└── f7cdefb77b24_ocr_summary.txt # 处理摘要
chunks.json 格式
[
{
"id": "chunk_0",
"text": "日本茶道的历史可以追溯到...",
"chunk_index": 0
},
{
"id": "chunk_1",
"text": "抹茶的制作方法...",
"chunk_index": 1
}
]
质量对比
处理前(旧 OCR)
缅
宫
障口"丁烹
心
传
承
千
年
的
本
茶
道
- 换行符比例: 28.0%
- 平均行长: 1.03 字符
- 质量评分: 64.5 / 100
处理后(PaddleOCR)
传承千年的日本茶道
日本茶道是一种独特的文化艺术形式,它融合了禅宗思想、
美学追求和生活哲学。茶道不仅仅是喝茶,更是一种精神修养
和审美体验。
- 换行符比例: 2.5%
- 平均行长: 45 字符
- 质量评分: 90+ / 100
批量处理
处理多个 PDF 文件:
# Windows PowerShell
Get-ChildItem *.pdf | ForEach-Object {
python scripts/reprocess_pdf_with_paddleocr.py $_.FullName
}
# Linux/macOS
for pdf in *.pdf; do
python scripts/reprocess_pdf_with_paddleocr.py "$pdf"
done
下一步
处理完成后:
- ✅ 查看质量报告:
knowledge_bases/{kb_id}_ocr_summary.txt - ✅ 验证质量:
python scripts/check_kb_quality.py - ✅ 生成向量:
python scripts/regenerate_vectors.py {kb_id} - ✅ 启用专家: 编辑
knowledge_bases/experts/index.json - ✅ 重启服务:
docker-compose restart mbe-api - ✅ 测试回答: 在 UI 中提问相关问题
技术支持
遇到问题?
- 查看完整文档:
docs/guides/OCR_QUALITY_IMPROVEMENT_GUIDE.md - 检查依赖安装:
pip list | grep -E "paddle|pdf2image" - 查看处理日志: 脚本输出详细日志
- 提交 Issue: 附带错误信息和 PDF 样本
最后更新: 2026-02-03
维护者: AI Assistant