DeepSeek OCR — Optical Character Recognition
OCR service sử dụng Vision-Language Model chạy trên GPU RTX 3060. Hỗ trợ nhận dạng văn bản từ ảnh/PDF, cache Redis, rate limiting, và pipeline OCR→TTS tích hợp.
Base URL
https://pnt.badt.vn/deepseek-ocr/
External: https://pnt.badt.vn/deepseek_ocr | Internal: http://localhost:8040
Authentication
Tất cả request yêu cầu Bearer token trong header:
Authorization: Bearer <API_AI_TOKEN>
Lưu ý: Xác thực tại Nginx reverse proxy. Gọi internal localhost:8040 không cần token. Token từ env API_AI_TOKEN.
API Endpoints
/ocr/file
OCR
OCR từ file upload — Upload file ảnh hoặc PDF để nhận dạng văn bản.
Parameters
| Param | Type | Required | Description |
|---|---|---|---|
| file | file | Yes | File ảnh hoặc PDF (JPG/JPEG, PNG, BMP, TIFF, PDF), max 10MB |
| enhance | bool | No | Tăng cường chất lượng ảnh trước OCR (contrast, denoise, deskew). Default: false |
| language | string | No | Ngôn ngữ: vi, en, auto (mặc định). auto = tự động phát hiện |
Response 200 OK
{
"text": "Nội dung văn bản được nhận dạng...",
"time": 1.234,
"model": "qwen2-vl-7b",
"device": "cuda",
"cached": false,
"enhanced": true
}
/ocr/base64
OCR
OCR từ base64 — Gửi ảnh dưới dạng chuỗi base64.
Parameters
| Param | Type | Required | Description |
|---|---|---|---|
| image | string | Yes | Chuỗi base64 của ảnh (có hoặc không prefix data:image/...;base64,) |
| enhance | bool | No | Tăng cường chất lượng ảnh. Default: false |
| language | string | No | Ngôn ngữ: vi, en, auto (mặc định) |
Request Example
{
"image": "iVBORw0KGgoAAAANSUhEUg...",
"language": "vi",
"enhance": true
}
/ocr/url
OCR
OCR từ URL — Nhận dạng văn bản từ URL ảnh công khai.
Parameters
| Param | Type | Required | Description |
|---|---|---|---|
| url | string | Yes | URL công khai của ảnh cần OCR |
| enhance | bool | No | Tăng cường chất lượng ảnh. Default: false |
| language | string | No | Ngôn ngữ: vi, en, auto (mặc định) |
Request Example
{
"url": "https://example.com/document.jpg",
"language": "en",
"enhance": false
}
/ocr-tts/file
OCR→TTS
OCR + Text-to-Speech — Pipeline tích hợp: upload ảnh → OCR nhận dạng → TTS → trả về text + link audio MP3.
Parameters
| Param | Type | Required | Description |
|---|---|---|---|
| file | file | Yes | File ảnh hoặc PDF cần OCR (max 10MB) |
| enhance | bool | No | Tăng cường ảnh. Default: false |
| language | string | No | Ngôn ngữ OCR: vi (mặc định), en, auto |
| tts_language | string | No | Ngôn ngữ đầu ra TTS: vi (mặc định), en. Nếu không chỉ định, dùng language |
Response 200 OK
{
"text": "Nội dung văn bản nhận dạng được...",
"audio_url": "https://pnt.badt.vn/deepseek-ocr/audio/abc123.mp3",
"time": 2.345,
"ocr_time": 1.200,
"tts_time": 1.145,
"char_count": 245,
"max_chars": 5000
}
/tts/text
TTS
Text-to-Speech từ text — Chuyển văn bản thành giọng nói (gTTS).
Parameters
| Param | Type | Required | Description |
|---|---|---|---|
| text | string | Yes | Văn bản cần chuyển thành giọng nói (max 5000 ký tự) |
| language | string | No | Ngôn ngữ: vi (mặc định), en |
| speed | number | No | Tốc độ đọc: 0.5 đến 2.0 (mặc định: 1.0) |
Response 200 OK
{
"audio_url": "https://pnt.badt.vn/deepseek-ocr/audio/abc123.mp3",
"time": 1.145,
"char_count": 245,
"max_chars": 5000
}
/tts/file
TTS
Text-to-Speech từ file — Đọc nội dung file text và chuyển thành giọng nói.
Parameters
| Param | Type | Required | Description |
|---|---|---|---|
| file | file | Yes | File văn bản (.txt) cần đọc |
| language | string | No | Ngôn ngữ: vi (mặc định), en |
| speed | number | No | Tốc độ đọc: 0.5 đến 2.0 (mặc định: 1.0) |
/tts/languages
Utility
Danh sách ngôn ngữ TTS — Liệt kê các ngôn ngữ được hỗ trợ bởi gTTS.
Response 200 OK
{
"languages": [
{"code": "vi", "name": "Tiếng Việt"},
{"code": "en", "name": "English"},
{"code": "zh-CN", "name": "中文 (简体)"},
{"code": "ja", "name": "日本語"},
{"code": "ko", "name": "한국어"},
{"code": "th", "name": "ไทย"},
{"code": "fr", "name": "Français"},
{"code": "de", "name": "Deutsch"}
]
}
/models
Info
Danh sách models OCR — Liệt kê các model OCR có sẵn và trạng thái.
Response 200 OK
{
"models": [
{"id": "qwen2-vl-7b", "name": "Qwen2-VL-7B-Instruct", "status": "active", "device": "cuda", "type": "vision-language"},
{"id": "deepseek-vl-1.3b", "name": "deepseek-ai/deepseek-vl-1.3b-chat", "status": "active", "device": "cuda", "type": "vision-language"},
{"id": "easyocr", "name": "EasyOCR", "status": "active", "device": "cuda", "type": "cnn-transformer"},
{"id": "tesseract", "name": "Tesseract OCR", "status": "active", "device": "cpu", "type": "traditional"}
]
}
/health
Utility
Health Check — Kiểm tra trạng thái service, model, device, memory, cache backend.
Response 200 OK
{
"status": "healthy",
"service": "DeepSeek OCR Service",
"models": ["qwen2-vl-7b", "deepseek-vl-1.3b", "easyocr", "tesseract"],
"device": "cuda",
"gpu_memory": "2.6 GB / 12.0 GB",
"cache_backend": "redis (192.168.1.250:6379)",
"rate_limiting": true
}
/
Info
Root Info — Thông tin tổng quan về OCR service.
Response 200 OK
{
"service": "DeepSeek OCR Service",
"version": "2.0.0",
"endpoints": [
"/ocr/file",
"/ocr/base64",
"/ocr/url",
"/ocr-tts/file",
"/tts/text",
"/tts/file",
"/tts/languages",
"/models",
"/health",
"/config"
]
}
/config
Info
Config hiện tại — Xem cấu hình service: models, device, cache settings, rate limits.
Response 200 OK
{
"models": ["qwen2-vl-7b", "deepseek-vl-1.3b", "easyocr", "tesseract"],
"default_model": "qwen2-vl-7b",
"device": "cuda:0",
"gpu": "RTX 3060",
"cache": {
"backend": "redis",
"host": "192.168.1.250",
"port": 6379,
"ttl": 3600
},
"rate_limiting": {
"ocr": "30 req/min, 1000 req/hr",
"ocr-tts": "15 req/min, 500 req/hr",
"tts": "30 req/min, 1000 req/hr",
"admin": "5 req/min"
}
}
Cache & Memory Management
/cache/stats
Admin
Cache stats — Xem thống kê cache: hit rate, kích thước, số keys, TTL.
Response 200 OK
{
"backend": "redis",
"status": "connected",
"keys": 145,
"hit_rate": 0.72,
"memory_used_mb": 12.5,
"ttl": 3600
}
/cache/clear
Admin
Clear cache — Xóa toàn bộ cache OCR. Cần auth token.
Response 200 OK
{
"status": "cache_cleared",
"cleared_keys": 123
}
/memory/stats
Admin
Memory stats — Xem thống kê bộ nhớ: RAM usage, VRAM usage, peak usage.