Di era digital, proses ekstraksi data dari dokumen fisik masih menjadi tantangan besar di Indonesia, khususnya untuk dokumen identitas seperti Kartu Tanda Penduduk (KTP).
Proses manual yang memakan waktu dan rentan kesalahan membuat otomatisasi menjadi kebutuhan. Dalam artikel ini, saya akan membahas bagaimana membangun sistem ekstraksi data KTP menggunakan Gemini AI dari Google, diimplementasikan dengan Google Apps Script, dan diintegrasikan dengan WhatsApp untuk akses yang lebih mudah.
## Latar Belakang Masalah Beberapa masalah yang sering dihadapi dalam proses ekstraksi data KTP secara manual:
1. **Waktu yang lama**: Mengetik ulang data KTP memerlukan waktu 2-5 menit per dokumen
2. **Kesalahan manusia**: Kesalahan ketik sering terjadi dalam proses manual
3. **Kurangnya standarisasi**: Format penyimpanan data KTP yang tidak konsisten
4. **Skalabilitas rendah**: Tim administratif kewalahan saat harus memproses banyak KTP ## Solusi: KTPScan AI KTPScan AI adalah sistem ekstraksi data KTP otomatis yang mengatasi masalah-masalah tersebut dengan menggunakan:
1. **Gemini AI** dari Google untuk pemrosesan gambar dan ekstraksi teks
2. **Google Apps Script** sebagai backend serverless
3. **Google Sheets** untuk penyimpanan dan organisasi data
4. **Webhook WhatsApp** untuk kemudahan penggunaan
## Arsitektur Sistem Sistem KTPScan AI terdiri dari tiga komponen utama: ###
1. Backend Google Apps Script Google Apps Script digunakan sebagai backend karena: - Serverless (tidak membutuhkan infrastruktur) - Integrasi mudah dengan Google Sheets dan Drive - Memungkinkan deployment API tanpa konfigurasi tambahan Kode Google Apps Script memiliki beberapa fungsi utama: - Menerima gambar KTP - Berkomunikasi dengan Gemini AI - Memproses hasil analisis - Menyimpan data ke spreadsheet - Menyediakan endpoint API ###
2. API RESTful API RESTful dibangun di atas Google Apps Script Web App, memungkinkan sistem lain untuk terhubung dan menggunakan layanan ekstraksi data KTP. API menyediakan endpoint untuk: - Pemrosesan gambar KTP - Mendapatkan dokumentasi API - Memeriksa status API Respons API dikembalikan dalam format JSON terstruktur, memudahkan integrasi dengan berbagai platform. ###
3. Webhook WhatsApp Untuk meningkatkan aksesibilitas, sistem ini juga terintegrasi dengan WhatsApp melalui webhook PHP. Pengguna dapat mengirim gambar KTP ke nomor WhatsApp bot dengan keterangan ".ktp", dan bot akan membalas dengan data yang diekstraksi.
## Implementasi Detail ### Ekstraksi Data dengan Gemini AI Inti dari sistem ini adalah prompt rekayasa yang diberikan ke Gemini AI untuk mengekstrak data dari gambar KTP:
```javascript const PROMPT_TEMPLATE = `Fokus HANYA pada dokumen yang terlihat seperti Kartu Tanda Penduduk (KTP) Indonesia. Jika dokumen yang dilihat tidak memuat informasi KTP, silakan jawab dengan "Dokumen ini bukan KTP" dan jangan lakukan analisis apa pun. Jika dokumen adalah KTP, ekstrak data berikut:
1. NIK (Nomor Induk Kependudukan)
2. Nama lengkap
3. Tempat/Tanggal Lahir
4. Jenis Kelamin
5. Golongan Darah (jika ada) ...`;
Prompt didesain dengan hati-hati untuk:
API endpoint dikonfigurasi untuk menerima request POST dengan parameter:
action
: Menentukan tindakan API (process-ktp, docs)fileData
: Gambar KTP dalam format base64fileName
: Nama file untuk disimpan di Google DrivemimeType
: MIME type gambar (biasanya image/jpeg)Berikut contoh implementasi handler untuk permintaan POST:
function doPost(e) {
try {
// Get parameters from form data or JSON
let data;
if (e.postData && e.postData.contents) {
try {
// Try parsing as JSON first
data = JSON.parse(e.postData.contents);
} catch (error) {
// If not JSON, fall back to form parameters
data = e.parameter;
}
} else {
// Use form parameters directly
data = e.parameter;
}
// Handle different API actions
let result;
switch(data.action) {
case 'process-ktp':
result = processKTPAPI(data);
break;
// ...lainnya
}
// Return result
return ContentService.createTextOutput(JSON.stringify(result))
.setMimeType(ContentService.MimeType.JSON);
} catch (error) {
// Error handling
}
}
Webhook WhatsApp menggunakan PHP untuk menerima pesan, mengekstrak gambar, dan berkomunikasi dengan API:
// Cek jika pesan berisi keyword ".ktp" dan gambar
if (($message == '.ktp' || strpos($message, '.ktp') === 0) && $bufferimage) {
// Log processing
file_put_contents('ktp_log.txt', '[' . date('Y-m-d H:i:s') . "] Processing KTP from: $from\n", FILE_APPEND);
// Analisis KTP
$result = processKTP($bufferimage);
if ($result && isset($result['data']['analysis']['parsed'])) {
$parsed = $result['data']['analysis']['parsed'];
// Format dan kirim respons
// ...
}
}
Respons yang dikirim kembali ke pengguna diformat dengan baik menggunakan class ResponWebhookFormatter.
Sistem ini dapat digunakan dalam berbagai skenario:
Karena KTP berisi data pribadi sensitif, beberapa praktek keamanan yang diimplementasikan:
Meskipun sistem ini sudah berfungsi dengan baik, masih ada beberapa keterbatasan:
Pengembangan masa depan yang direncanakan:
KTPScan AI menunjukkan bagaimana teknologi AI dapat diimplementasikan secara praktis untuk menyelesaikan masalah sehari-hari dalam konteks Indonesia. Dengan menggunakan Google Apps Script dan Gemini AI, sistem ini menyediakan solusi ekstraksi data KTP tanpa perlu infrastruktur kompleks.
Solusi semacam ini dapat menghemat ribuan jam kerja administratif dan mengurangi kesalahan input data secara signifikan. Dengan biaya implementasi yang rendah dan kemudahan penggunaan, sistem seperti KTPScan AI dapat menjadi langkah awal menuju digitalisasi proses administrasi yang lebih efisien di Indonesia.
Disclaimer: Sistem ini adalah proof-of-concept dan penerapannya harus mematuhi semua peraturan perlindungan data yang berlaku. Penggunaan data KTP harus selalu mengutamakan privasi dan keamanan pengguna.