# 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 ```