Files
openocr/README.md
T
2026-06-22 08:31:19 +08:00

98 lines
2.4 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.
# OpenOCR Markdown Service
一个精简版图片/PDF 转 Markdown 服务,核心依赖 `openocr-python==0.1.5`,保留文档解析能力,去掉训练、评测和实验脚本。
## 功能
- `POST /api/recognize`:上传图片或 PDF,生成 Markdown 和 JSON。
- `GET /api/history`:查看已解析文件列表。
- `GET /output/...`:访问生成的 Markdown、JSON 和原始文件。
- `openocr-md`:命令行直接解析单个图片/PDF。
## 本地运行
```bash
python -m venv .venv
source .venv/bin/activate
pip install -e .
cp .env.example .env
uvicorn openocr_markdown.api:app --host 0.0.0.0 --port 8000
```
Windows PowerShell:
```powershell
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -e .
Copy-Item .env.example .env
uvicorn openocr_markdown.api:app --host 0.0.0.0 --port 8000
```
首次运行会自动下载 OpenOCR 所需模型,耗时取决于网络和机器性能。
## API 示例
```bash
curl -F "file=@examples/page.png" http://127.0.0.1:8000/api/recognize
curl http://127.0.0.1:8000/api/history
```
重复上传同名文件默认复用已有结果;需要重新识别时增加 `force=true`
```bash
curl -F "file=@examples/page.png" -F "force=true" http://127.0.0.1:8000/api/recognize
```
## 命令行
```bash
openocr-md path/to/document.pdf --output-dir data/output
```
## Docker 部署
```bash
cp .env.example .env
docker compose up -d --build
```
服务启动后访问:
- API 文档:`http://服务器IP:8000/docs`
- 健康检查:`http://服务器IP:8000/health`
- 输出文件:`http://服务器IP:8000/output/...`
## 关键配置
通过 `.env` 或服务器环境变量配置:
```env
OPENOCR_OUTPUT_DIR=data/output
OPENOCR_UPLOAD_DIR=data/uploads
OPENOCR_USE_GPU=false
OPENOCR_AUTO_DOWNLOAD=true
OPENOCR_LAYOUT_THRESHOLD=0.4
OPENOCR_MAX_LENGTH=2048
OPENOCR_CORS_ORIGINS=*
```
如果远程服务器有 GPU,可以先安装带 GPU 的运行环境,再把 `OPENOCR_USE_GPU=true`。当前 Dockerfile 默认是 CPU 版,适合先验证完整链路。
## 项目结构
```text
.
├── src/openocr_markdown/
│ ├── api.py # FastAPI 服务
│ ├── cli.py # 命令行入口
│ ├── config.py # 环境变量配置
│ ├── engine.py # OpenOCR 模型加载和解析封装
│ └── schemas.py # API 响应模型
├── tests/
├── Dockerfile
├── docker-compose.yml
├── pyproject.toml
└── .env.example
```