ocr-ebola / README.md
Joseph Pollack
adds footer for explicit user interface openapi ui + json & gradio schema + health endpoint - no reason why
ce82d17 unverified
|
Raw
History Blame Contribute Delete
2.72 kB
---
title: OCR Capacity Building as a Service
emoji: 🏥
colorFrom: blue
colorTo: green
sdk: gradio
sdk_version: 6.20.0
python_version: "3.12.12"
app_file: app.py
pinned: false
license: mit
hardware: zero-gpu
startup_duration_timeout: 30m
models:
- ATH-MaaS/OvisOCR2
- zai-org/GLM-OCR
preload_from_hub:
- ATH-MaaS/OvisOCR2
- zai-org/GLM-OCR
short_description: Open OCR API for DRC Ebola contact-tracing docs.
---
07/17 trigger rebuild
# OCR Capacity Building as a Service
Open OCR API for Ebola contact-tracing documents in the DRC. Choose between
[ATH-MaaS/OvisOCR2](https://huggingface.co/ATH-MaaS/OvisOCR2) and
[zai-org/GLM-OCR](https://huggingface.co/zai-org/GLM-OCR), upload a page image or
multi-page PDF, and stream Markdown (with LaTeX formulas and HTML tables).
**OvisOCR2** emits figure placeholders that this Space materializes as cropped
visual regions. **GLM-OCR** returns text recognition output without bbox crops.
## Supported inputs
- Images: PNG, JPEG, WebP
- PDFs: up to 50 pages (rasterized locally; up to 4 pages per ZeroGPU lease)
## API
Streaming endpoint: `/run_ocr` (also registered as MCP tool `run_ocr`).
On the live Space UI, open **Use via API** for copy-paste clients. Machine-readable docs:
- Gradio schema: [`/gradio_api/info`](https://tonic-ocr-ebola.hf.space/gradio_api/info)
- OpenAPI: [`/docs`](https://tonic-ocr-ebola.hf.space/docs) · [`/openapi.json`](https://tonic-ocr-ebola.hf.space/openapi.json)
- Health: [`/healthz`](https://tonic-ocr-ebola.hf.space/healthz)
| Arg | Type | Default | Description |
|-----|------|---------|-------------|
| `image_path` | FileData | required | Uploaded image or PDF |
| `page_index` | int | `0` | 0-based start page for this lease |
| `page_count` | int | `4` | Max pages in this GPU batch |
| `model_choice` | str | `"OvisOCR2"` | `"OvisOCR2"` or `"GLM-OCR"` |
| `prompt` | str | `""` | Override; empty → model default |
```python
from gradio_client import Client, handle_file
client = Client("Tonic/ocr-ebola")
job = client.submit(
handle_file("form.pdf"),
0,
4,
"OvisOCR2",
"",
api_name="/run_ocr",
)
for chunk in job:
print(chunk["event"], chunk.get("current_page"), chunk.get("char_count"))
```
Also available as an MCP tool named `run_ocr`. Health check: `GET /healthz`.
## Local run
```bash
# Backend deps (Space installs requirements.txt automatically)
pip install -r requirements.txt
# Frontend (build once; commit dist/ for Spaces)
cd frontend && npm install && npm run build && cd ..
# Mock stream without loading weights (Windows PowerShell: $env:OCR_TEST_MODE=1)
OCR_TEST_MODE=1 python app.py
# Real models (needs CUDA)
python app.py
```
Open `http://127.0.0.1:7860`.