98 lines
2.4 KiB
Markdown
98 lines
2.4 KiB
Markdown
|
|
# 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
|
|||
|
|
```
|