# ocr **Repository Path**: code-your-quest/ocr ## Basic Information - **Project Name**: ocr - **Description**: 一个识别图片文字可用于手机及pc端基于 Flask 的高性能 OCR (光学字符识别) 和 TTS (语音合成) Web 服务 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: gitee - **Homepage**: https://ocr.fbys.online/ - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-15 - **Last Updated**: 2025-12-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Flask OCR & TTS Service 这是一个基于 Flask 的高性能 OCR (光学字符识别) 和 TTS (语音合成) Web 服务。专为 Windows Server 环境优化,集成 PaddleOCR v5 模型与腾讯云语音合成接口。 ## 效果 ![alt text](/uploads/1.webp) ## 🌟 项目亮点 * **高精度 OCR**: 集成 PaddleOCR 最新 `PP-OCRv5` 模型,支持超轻量级移动端模型,识别速度快、精度高。 * **智能图像处理**: 内置图像自动压缩、尺寸调整和方向校正 (EXIF),大幅降低服务器内存占用。 * **生产级部署**: * 使用 **PM2** 进行进程守护和日志管理。 * 使用 **Caddy** 作为反向代理,支持自动 HTTPS 和多域名配置。 * 针对低配置服务器进行了内存优化 (OMP/MKL 线程限制)。 * **API 友好**: 提供标准 RESTful 接口,易于对接前端 (如 Nuxt.js) 或移动端应用。 ## 🛠 技术栈 * **后端框架**: Python Flask * **OCR 引擎**: PaddleOCR (PaddlePaddle) * **云服务**: 腾讯云 TTS (Text To Speech) * **部署工具**: PM2 (Windows), Caddy Web Server * **图像处理**: Pillow (PIL) ## 🚀 快速开始 ### 1. 环境要求 * Windows Server * Python 3.10+ * Node.js (用于安装 PM2) ### 2. 安装依赖 ```powershell # 创建虚拟环境 python -m venv venv # 激活虚拟环境 .\venv\Scripts\activate # 安装 Python 依赖 pip install -r requirements.txt ``` ### 3. 配置环境变量 在项目根目录创建 `.env` 文件: ```ini # 腾讯云配置 (用于 TTS) TENCENT_SECRET_ID=你的SecretId TENCENT_SECRET_KEY=你的SecretKey ``` ### 4. 运行服务 (开发模式) ```powershell python app.py ``` ## 📦 生产环境部署 (PM2 + Caddy) 本项目包含完整的 PM2 和 Caddy 配置文件,支持一键启动。 ### 1. 启动服务 ```powershell # 启动 OCR 服务和 Caddy 代理 pm2 start ecosystem.config.js # 保存当前进程列表 (开机自启) pm2 save ``` ### 2. 配置域名 (Caddyfile) 修改 `Caddyfile` 文件以绑定您的域名: ```caddy # 全局配置:关闭 Admin API 以避免端口冲突 { admin off } # OCR 服务域名 ocr.yourdomain.com { reverse_proxy localhost:5000 } # 其他网站 (如 Nuxt 应用) www.yourdomain.com { reverse_proxy localhost:3000 } ``` 修改后运行 `pm2 restart caddy-server` 生效。 ## 📂 目录结构 ``` C:\ocr_app\ ├── app.py # Flask 主程序 ├── Caddyfile # Caddy 反向代理配置 ├── ecosystem.config.js # PM2 进程管理配置 ├── requirements.txt # Python 依赖列表 ├── templates/ # HTML 模板 ├── uploads/ # 图片上传临时目录 └── venv/ # Python 虚拟环境 ``` ## 🔧 常见问题 * **端口冲突**: 如果遇到 `bind: address already in use`,请检查是否运行了 Nginx 或其他 Web 服务占用 80/443 端口。 * **内存占用**: 已在 `ecosystem.config.js` 中限制最大内存并配置单线程模式,适合 2GB+ 内存的服务器。