OCR microservice using MinerU 2.5-Pro on GPU server. Standalone HTTP API + Web UI for TUAF University document parsing.
┌──────────────────────────────────────────────────┐
│ tuaf-ocr-gpu (10.64.220.241:5003) │
│ │
│ ┌──────────────┐ ┌──────────────────┐ │
│ │ FastAPI │ │ Web UI (Vite) │ │
│ │ /parse │ │ / upload+view │ │
│ │ /health │ └──────────────────┘ │
│ └──────┬───────┘ │
│ │ │
│ ┌──────▼─────────────┐ │
│ │ MinerU 2.5-Pro │ │
│ │ VLM mode, CUDA 12 │ │
│ │ ~3-5GB VRAM │ │
│ └────────────────────┘ │
└──────────────────────────────────────────────────┘
xuanhoatrieu/tuaf-ocr-gpu (Private)# On GPU server (10.64.220.241):
cd ~/tuaf-ocr-gpu
git pull
cp .env.example .env
# edit .env to set OCR_GPU_API_KEY
docker compose up -d --build
docker logs -f tuaf-ocr-gpu # watch model download (~5GB first time)
curl http://localhost:5003/health
curl -X POST http://10.64.220.241:5003/parse \
-H "X-Api-Key: $OCR_GPU_API_KEY" \
-F "file=@quyche-mau.pdf" \
-o result.json
jq -r .markdown result.json | head -50
Open http://10.64.220.241:5003/ in browser.
This repo follows Workflow A — code on dev box, deploy to GPU box.
# Dev box (10.64.11.109):
cd /home/moodle/tuaf-ocr-gpu
# edit code
git add . && git commit -m "..." && git push
# GPU box (10.64.220.241):
ssh tuaf-gpu 'cd tuaf-ocr-gpu && git pull && docker compose up -d --build'
MINERU_BACKEND=hybrid in .env (uses 2-4GB)models/ volumelang=mixed in /parse paramssudo ufw allow 5003/tcp| Component | Version | Lock reason |
|---|---|---|
| MinerU | 3.1.15 | Issue #4696 path breakage on auto-upgrade |
| CUDA | 12 | Match GPU driver 535+ |
MinerU uses a custom license based on Apache 2.0. See LICENSE.MinerU for details.
This repo (configuration, UI, deployment scripts) is owned by TUAF.
10 commits
TypeScript
72.1%
Python
21.0%
Shell
3.2%
Dockerfile
2.2%
CSS
1.0%
OCR microservice using MinerU 2.5-Pro on GPU server. Standalone HTTP API + Web UI for TUAF University document parsing.
┌──────────────────────────────────────────────────┐
│ tuaf-ocr-gpu (10.64.220.241:5003) │
│ │
│ ┌──────────────┐ ┌──────────────────┐ │
│ │ FastAPI │ │ Web UI (Vite) │ │
│ │ /parse │ │ / upload+view │ │
│ │ /health │ └──────────────────┘ │
│ └──────┬───────┘ │
│ │ │
│ ┌──────▼─────────────┐ │
│ │ MinerU 2.5-Pro │ │
│ │ VLM mode, CUDA 12 │ │
│ │ ~3-5GB VRAM │ │
│ └────────────────────┘ │
└──────────────────────────────────────────────────┘
xuanhoatrieu/tuaf-ocr-gpu (Private)# On GPU server (10.64.220.241):
cd ~/tuaf-ocr-gpu
git pull
cp .env.example .env
# edit .env to set OCR_GPU_API_KEY
docker compose up -d --build
docker logs -f tuaf-ocr-gpu # watch model download (~5GB first time)
curl http://localhost:5003/health
curl -X POST http://10.64.220.241:5003/parse \
-H "X-Api-Key: $OCR_GPU_API_KEY" \
-F "file=@quyche-mau.pdf" \
-o result.json
jq -r .markdown result.json | head -50
Open http://10.64.220.241:5003/ in browser.
This repo follows Workflow A — code on dev box, deploy to GPU box.
# Dev box (10.64.11.109):
cd /home/moodle/tuaf-ocr-gpu
# edit code
git add . && git commit -m "..." && git push
# GPU box (10.64.220.241):
ssh tuaf-gpu 'cd tuaf-ocr-gpu && git pull && docker compose up -d --build'
MINERU_BACKEND=hybrid in .env (uses 2-4GB)models/ volumelang=mixed in /parse paramssudo ufw allow 5003/tcp| Component | Version | Lock reason |
|---|---|---|
| MinerU | 3.1.15 | Issue #4696 path breakage on auto-upgrade |
| CUDA | 12 | Match GPU driver 535+ |
MinerU uses a custom license based on Apache 2.0. See LICENSE.MinerU for details.
This repo (configuration, UI, deployment scripts) is owned by TUAF.
10 commits
TypeScript
72.1%
Python
21.0%
Shell
3.2%
Dockerfile
2.2%
CSS
1.0%