OCR

Integrasi PaddleOCR di Sistem Berkas Karyawan untuk Ekstraksi Teks Dokumen

3 min read
Fitur Extract Teks PaddleOCR di sistem berkas karyawan

Salah satu klien saya bergerak di bidang HR, dan mereka minta dibuatkan sistem berkas karyawan untuk menyimpan dokumen seperti ijazah, transkrip akademik, KTP, sampai kontrak kerja dalam bentuk digital. Waktu proses requirement, tim HR-nya cerita bahwa selama ini data di dalam dokumen itu masih harus diketik ulang manual ke sistem lain, misalnya nomor induk mahasiswa, nama lengkap sesuai ijazah, atau nomor SK pendirian perguruan tinggi. Kalau berkas karyawannya ratusan, proses ketik ulang ini jelas memakan waktu staf HR dan gampang salah, apalagi kalau hasil scan dokumennya agak buram atau tulisannya kecil.

Dari situ saya usulkan menambahkan fitur ekstraksi teks otomatis di sistem berkas karyawan yang saya kerjakan, dengan PaddleOCR sebagai mesin OCR-nya. Begitu dokumen dibuka di viewer, ada tombol Extract Teks. Sekali klik, sistem membaca isi dokumen baris per baris dan menampilkannya di tabel di sisi kanan, lengkap dengan tombol salin per baris supaya staf HR tinggal copy-paste ke field yang sesuai.

Kenapa PaddleOCR, bukan API OCR cloud

Dokumen karyawan itu data pribadi yang sensitif, jadi saya sarankan ke klien untuk tidak mengirim isinya ke layanan OCR pihak ketiga seperti Google Vision atau AWS Textract. Selain soal privasi, biaya per-request juga jadi pertimbangan karena volume dokumen yang bakal diproses cukup banyak dan terus bertambah setiap ada karyawan baru. PaddleOCR jadi pilihan karena open source, dikembangkan oleh tim PaddlePaddle di Baidu, dan bisa saya jalankan sepenuhnya di server klien tanpa koneksi keluar. Model yang saya pakai adalah PP-OCRv4, yang menurut pengalaman saya cukup akurat untuk teks cetak seperti yang ada di ijazah, transkrip, dan KTP.

Di label hasil ekstraksi saya sengaja menuliskan “Ekstraksi lokal”, supaya jelas bagi tim HR klien bahwa prosesnya tidak melibatkan server luar. Ini jadi salah satu poin yang saya tekankan waktu presentasi hasil ke klien, karena kebijakan mereka soal data karyawan memang cukup ketat.

Cara kerjanya di balik layar

PaddleOCR saya jalankan sebagai service Python terpisah, dibungkus dengan FastAPI supaya bisa dipanggil lewat HTTP dari aplikasi utama. Instalasinya cukup sederhana:

pip install paddlepaddle
pip install paddleocr

Pemanggilan OCR-nya sendiri hanya butuh beberapa baris kode:

from paddleocr import PaddleOCR

ocr = PaddleOCR(use_angle_cls=True, lang='en')
result = ocr.ocr('dokumen.jpg', cls=True)

for line in result[0]:
    text = line[1][0]
    confidence = line[1][1]
    print(text, confidence)

Endpoint FastAPI menerima file dokumen yang sedang dibuka di viewer, menjalankan fungsi di atas, lalu mengembalikan array berisi teks dan skor keyakinan (confidence) tiap baris ke frontend. Di frontend, array itu saya render jadi tabel dengan nomor baris, isi teks, dan tombol salin, persis seperti yang tampil di fitur Extract Teks. Saya tambahkan juga opsi “Lihat teks mentah” untuk staf HR yang ingin menyalin seluruh hasil ekstraksi sekaligus tanpa dipecah per baris.

Batasannya juga saya sampaikan ke klien

PaddleOCR bekerja baik untuk teks cetak, tapi untuk tulisan tangan di kolom seperti tanggal lahir atau tanda tangan hasilnya masih perlu dicek manual. Struktur tabel di dokumen asli, misalnya kolom mata kuliah dan nilai di transkrip, juga ikut terpecah jadi baris-baris terpisah karena PaddleOCR mendeteksi teks berdasarkan posisi, bukan struktur tabel. Saya sampaikan dari awal ke klien bahwa fitur ini berfungsi sebagai alat bantu mempercepat input data, bukan pengganti verifikasi manual sepenuhnya, terutama untuk data yang dipakai di dokumen resmi atau administrasi legal.

Bagian yang membuat saya senang dari proyek ini bukan yang rumit-rumit, justru fitur kecil seperti ekstraksi teks ini yang paling terasa dampaknya buat tim HR klien sehari-hari. Ada banyak tool open source seperti PaddleOCR yang sebenarnya sudah cukup matang untuk dipasang langsung ke sistem internal perusahaan, tanpa harus bergantung pada API berbayar. Buat saya, itu salah satu hal yang membuat pekerjaan sebagai web developer terasa lebih berarti, menyambungkan tool yang sudah ada ke masalah nyata yang dihadapi klien.


Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *

Chat!
1