Skip to content

OCR V3

OCR V3 adalah service PDF-to-Markdown OCR RAGA, dibangun di atas Python + FastAPI. Menerima file PDF (upload atau URL), lalu memproksikan pekerjaan OCR-nya ke engine eksternal (cloud maupun local) — service ini sendiri tidak lagi menjalankan OCR engine secara langsung. Setelah hasil OCR diterima, service mengambil alih penyimpanan PDF sumber ke MinIO, mengindeks hasil teks ke Elasticsearch, dan memicu proses Summarize secara otomatis. Digunakan oleh API Tarantula untuk memproses dokumen yang diunggah user.

Berbeda dari service lain yang synchronous, OCR V3 memakai antrian in-memory dengan satu worker thread — request OCR yang besar/lama diproses di background lewat task_id, tidak memblokir request berikutnya.

Tech Stack

KomponenTeknologi
RuntimePython 3.10/3.11
FrameworkFastAPI + uvicorn
OCR ProcessingDiproksi ke engine OCR eksternal (cloud/local) via HTTP
Object StorageMinIO
Search / IndexElasticsearch
Integrasi SummarizeHTTP client ke service Summarize eksternal
Secret Managementinfisical_sdk (Python)

Detail environment variable, endpoint, dan diagram pipeline lengkap ada di halaman Teknis.

Cara Kerja Singkat

  1. Client (API Tarantula) mengirim POST /api/v1/pdfs — file/URL PDF masuk ke antrian in-memory, service langsung membalas beserta task_id (status pending).
  2. Satu worker thread mengambil task dari antrian secara serial, lalu mem-proxy file/URL tersebut ke OCR engine eksternal (CLOUD_PROCESSING_ENDPOINT atau LOCAL_PROCESSING_ENDPOINT, tergantung parameter processing), dan polling status task upstream sampai selesai.
  3. Setelah hasil OCR (content_list + md_content_list) diunduh, PDF sumber (jika berasal dari upload/merge) diunggah ke MinIO, dan hasil teks di-index ke Elasticsearch per-chunk (5 halaman per chunk).
  4. Proses Summarize dipicu otomatis di background terhadap hasil OCR — ringkasan dan ringkasan per-chunk disimpan kembali ke Elasticsearch, tanpa memblokir penyelesaian task OCR.
  5. Client polling GET /api/v1/tasks/{task_id}/status untuk memantau progres, lalu mengambil hasilnya lewat GET /api/v1/pdfs/{id}.

Mode OCR

Mode (type_ocr)Keterangan
ekstrak_only (default)Ekstraksi teks saja tanpa analisis gambar
representasiTeks + deskripsi gambar, jumlah gambar dibatasi representasi_count

Mode ini hanya diteruskan sebagai parameter ke OCR engine eksternal — logika OCR-nya sendiri dijalankan oleh engine tersebut, bukan oleh OCR V3.

Ringkasan

OCR V3 kini berperan sebagai lapisan orkestrasi: memproksikan pemrosesan PDF ke OCR engine eksternal (cloud/local), lalu menangani penyimpanan (MinIO), pengindeksan (Elasticsearch), dan pemicuan ringkasan dokumen (Summarize) secara otomatis. Dirancang untuk beban kerja berat lewat model antrian in-memory satu worker — client tidak menunggu request selesai secara sinkron, melainkan polling status lewat task_id sampai hasil siap diambil.