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

2.4 KiB
Raw Blame History

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。

本地运行

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:

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 示例

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

curl -F "file=@examples/page.png" -F "force=true" http://127.0.0.1:8000/api/recognize

命令行

openocr-md path/to/document.pdf --output-dir data/output

Docker 部署

cp .env.example .env
docker compose up -d --build

服务启动后访问:

  • API 文档:http://服务器IP:8000/docs
  • 健康检查:http://服务器IP:8000/health
  • 输出文件:http://服务器IP:8000/output/...

关键配置

通过 .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 版,适合先验证完整链路。

项目结构

.
├── 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