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.

Hoạt động
Thông tin nổi bật: DeepSeek OCR sử dụng Vision-Language Model (DeepSeek-VL/Qwen2-VL) để nhận dạng văn bản với độ chính xác cao. Hỗ trợ nhiều model: qwen2-vl-7b (mặc định), deepseek-vl-1.3b, easyocr, tesseract. Cache Redis cho tốc độ OCR nhanh ~1-3s/image. Pipeline OCR→TTS tích hợp sẵn.
~1-3s
Tốc độ OCR/image
4
OCR Models
6
Định dạng hỗ trợ
Redis
Cache Backend

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

POST /ocr/file OCR

OCR từ file upload — Upload file ảnh hoặc PDF để nhận dạng văn bản.

Parameters

ParamTypeRequiredDescription
filefileYesFile ảnh hoặc PDF (JPG/JPEG, PNG, BMP, TIFF, PDF), max 10MB
enhanceboolNoTăng cường chất lượng ảnh trước OCR (contrast, denoise, deskew). Default: false
languagestringNoNgô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
}
POST /ocr/base64 OCR

OCR từ base64 — Gửi ảnh dưới dạng chuỗi base64.

Parameters

ParamTypeRequiredDescription
imagestringYesChuỗi base64 của ảnh (có hoặc không prefix data:image/...;base64,)
enhanceboolNoTăng cường chất lượng ảnh. Default: false
languagestringNoNgôn ngữ: vi, en, auto (mặc định)

Request Example

{
  "image": "iVBORw0KGgoAAAANSUhEUg...",
  "language": "vi",
  "enhance": true
}
POST /ocr/url OCR

OCR từ URL — Nhận dạng văn bản từ URL ảnh công khai.

Parameters

ParamTypeRequiredDescription
urlstringYesURL công khai của ảnh cần OCR
enhanceboolNoTăng cường chất lượng ảnh. Default: false
languagestringNoNgôn ngữ: vi, en, auto (mặc định)

Request Example

{
  "url": "https://example.com/document.jpg",
  "language": "en",
  "enhance": false
}
POST /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

ParamTypeRequiredDescription
filefileYesFile ảnh hoặc PDF cần OCR (max 10MB)
enhanceboolNoTăng cường ảnh. Default: false
languagestringNoNgôn ngữ OCR: vi (mặc định), en, auto
tts_languagestringNoNgô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
}
POST /tts/text TTS

Text-to-Speech từ text — Chuyển văn bản thành giọng nói (gTTS).

Parameters

ParamTypeRequiredDescription
textstringYesVăn bản cần chuyển thành giọng nói (max 5000 ký tự)
languagestringNoNgôn ngữ: vi (mặc định), en
speednumberNoTố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
}
POST /tts/file TTS

Text-to-Speech từ file — Đọc nội dung file text và chuyển thành giọng nói.

Parameters

ParamTypeRequiredDescription
filefileYesFile văn bản (.txt) cần đọc
languagestringNoNgôn ngữ: vi (mặc định), en
speednumberNoTốc độ đọc: 0.5 đến 2.0 (mặc định: 1.0)
GET /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"}
  ]
}
GET /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"}
  ]
}
GET /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
}
GET / 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"
  ]
}
GET /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

GET /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
}
POST /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
}
GET /memory/stats Admin

Memory stats — Xem thống kê bộ nhớ: RAM usage, VRAM usage, peak usage.

Response 200 OK