Files
post-ocr/README.md

148 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 信封信息提取系统
工厂环境下信封背面信息的自动化提取与结构化录入工具。
## 功能特性
- 自动识别信封图片中的文字信息
- 结构化提取:编号、邮编、地址、联系人、电话
- 支持批量处理,结果导出为 Excel
- 提供桌面应用,支持摄像头实时拍照识别
## 系统要求
| 项目 | 最低配置 | 推荐配置 |
|------|----------|----------|
| CPU | 4 核 | 8 核 |
| 内存 | 4 GB | 8 GB |
| 硬盘 | 2 GB | 5 GB |
| 系统 | Ubuntu 20.04 / Windows 10 | Ubuntu 22.04 |
| Python | 3.8 | 3.10 |
## 快速开始
### 1. 安装依赖
```bash
# Ubuntu 需要安装系统依赖
sudo apt-get install -y libgl1-mesa-glx libglib2.0-0
# 安装 Python 依赖
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
```
### 2. 运行方式
**命令行批处理**
```bash
# 将图片放入 data/input/ 目录
.venv/bin/python src/main.py
# 结果保存在 data/output/result.xlsx
```
**桌面应用**
```bash
.venv/bin/python src/desktop.py
# 启动 PyQt6 窗口,可选择摄像头实时拍照识别
```
### 3. OCR 后端切换RapidOCR / PaddleOCR
默认后端为 **RapidOCR(ONNX)**,可通过环境变量切换:
```bash
# 默认RapidOCR推荐跨平台更稳
POST_OCR_BACKEND=rapidocr .venv/bin/python src/desktop.py
# 强制使用 PaddleOCR
POST_OCR_BACKEND=paddle .venv/bin/python src/desktop.py
# 自动:优先 RapidOCR失败回退 PaddleOCR
POST_OCR_BACKEND=auto .venv/bin/python src/desktop.py
```
常用相关环境变量:
- `POST_OCR_BACKEND_FALLBACK_PADDLE=1|0`:是否允许回退到 Paddle默认
- `POST_OCR_BACKEND=auto` 时为 `1`
- 用户显式 `POST_OCR_BACKEND=rapidocr` 时为 `0`
- `POST_OCR_MP_START_METHOD=spawn|fork`:强制指定 OCR 子进程启动方式macOS 默认rapidocr 用 `spawn`paddle 用 `fork`
- `POST_OCR_MAIN_SPLIT=1~4`:主 ROI 分片数(默认 2
- `POST_OCR_MAX_ROI_WIDTH=600+`:识别前缩放宽度上限(默认 960
- `POST_OCR_JOB_TIMEOUT_SEC`:单次识别超时秒数(默认 25
---
## Windows 桌面离线版zip 目录包)
本项目桌面版入口为 `src/desktop.py`PyQt6 + OpenCV适合现场工位离线使用。
### 1. 准备离线模型(在有网机器执行一次)
```bash
pip install -r requirements.txt
python scripts/prepare_models.py --models-dir models
```
执行完成后会生成 `models/whl/...` 目录结构;该 `models/` 目录需要与最终的 exe 同级分发。
### 2. Windows 打包(建议使用 PyInstaller 的 onedir
请在 Windows 机器上构建 Windows 包(不要跨平台交叉打包)。
```powershell
pip install -r requirements.txt
pip install pyinstaller
pyinstaller --noconfirm --clean --windowed --onedir `
--name "post-ocr-desktop" `
--paths "src" `
--collect-all "Cython" `
--collect-all "paddleocr" `
--collect-all "paddle" `
--add-data "models;models" `
"src/desktop.py"
```
打包完成后,将 `dist\post-ocr-desktop\` 整个目录压缩为 zip 交付即可。
注意:
- 本项目默认使用 PaddleOCR 2.10.0PP-OCRv4 中文)离线模型目录结构
-`models/` 缺失,程序会直接报错提示,避免触发联网下载
## 目录结构
```
post-ocr/
├── data/
│ ├── input/ # 原始图片存放处
│ └── output/ # 结果 Excel 及处理日志
├── src/
│ ├── main.py # 命令行入口
│ ├── desktop.py # 桌面应用入口
│ └── processor.py # 核心处理逻辑
├── requirements.txt
└── README.md
```
## 技术栈
- OCR 引擎: PaddleOCR 2.10 (PP-OCRv4)
- 桌面框架: PyQt6
- 数据处理: Pandas
## 常见问题
**Q: 识别准确率不高怎么办?**
- 确保图片清晰、光线充足
- 避免图片倾斜或模糊
- 手写字体识别率较低,建议使用印刷体
**Q: 处理速度慢?**
- 首次运行需下载模型(约 200MB
- 有 GPU 可安装 paddlepaddle-gpu 加速
- 批量处理时建议使用命令行模式