Proyek ini memungkinkan Anda mengunggah file Kartu Tanda Penduduk (KTP) atau Kartu Keluarga (KK) dalam bentuk (JPG) atau PDF, lalu mengekstrak informasi teks dalam format JSON terstruktur menggunakan Google Gemini API (gemini-2.5-flash
).
- OCR menggunakan model Gemini 2.5 Flash dari Google
- Input file: JPG atau PDF
- Output: JSON terstruktur berisi data identitas
- Deploy di Cloudflare Worker
- Frontend HTML terpisah di GitHub
Output hasil OCR akan dalam bentuk array of object seperti ini:
[
(jika ada tampilkan {
"no_kk": ""
}),
{
"nik": "",
"nama": "",
"tempat_lahir": "",
"tanggal_lahir": "",
"jenis_kelamin": "",
"golongan_darah": "",
"alamat": {
"jalan": "",
"RT": "",
"RW": "",
"desa": "",
"kecamatan": "",
"kabupaten": "",
"provinsi": ""
},
"agama": "",
(jika ada tampilkan {
"pendidikan": ""
}),
"status_perkawinan": "",
"pekerjaan": "",
"kewarganegaraan": ""
}
]
git clone https://github.com/arv-fazriansyah/ocr-gemini-ai-api.git
cd ocr-gemini-ai-api
Buka file worker (worker.js
atau index.js
) dan ubah bagian:
API_KEY: <<your_api_key>>
Ganti dengan Google Gemini API Key.
Jika menggunakan Wrangler:
npm install -g wrangler
wrangler init
wrangler publish
Frontend web (form upload) bisa diakses langsung dari GitHub raw URL:
https://raw.githubusercontent.com/arv-fazriansyah/ocr-gemini-ai-api/main/index.html
HTML ini akan otomatis diload oleh Worker saat diakses melalui metode GET
.
- File dikirim melalui
POST
ke Worker - Worker mengubah file menjadi base64
- Base64 + prompt dikirim ke endpoint Gemini API
- Hasil teks diekstrak dan diparse sebagai JSON
- Output ditampilkan dalam format JSON atau teks mentah (jika parsing gagal)
index.js
– Script utama Cloudflare Workerindex.html
– Frontend form upload fileREADME.md
– Dokumentasi
- Pastikan file tidak melebihi batas ukuran Cloudflare (10 MB).
- Jangan gunakan API Key publik di frontend.
- Gunakan Gemini Flash (
gemini-2.5-flash
) untuk performa cepat.
MIT © 2025 arv-fazriansyah