Node.js Image to Text (KTP INDONESIA)

To run this code, you need to ensure you have installed the necessary dependencies, particularly Tesseract.js. You can install Tesseract.js using npm:

npm install tesseract.js

Copy Paste This Code:

const Tesseract = require('tesseract.js');

async function recognizeKTP(imagePath) {
    try {
        // Run OCR on the provided image
        const { data: { text } } = await Tesseract.recognize(
            imagePath,
            'ind', // Set the language to Indonesian
            { logger: m => console.log(m) } // Optional logger function to see progress
        );

        // Extract relevant fields from the recognized text
        const ktpData = {
            NIK: '',
            Nama: '',
            TglLahir: '',
            TempatLahir: '',
            JenisKelamin: '',
            Alamat: '',
            GolDarah: '',
            Agama: '',
            StatusPerkawinan: '',
            Pekerjaan: '',
            Kewarganegaraan: '',
            Propinsi: '',
            Kabupaten: '',
            BerlakuHingga: ''
        };

        const lines = text.split('\n');

        lines.forEach((line, index) => {
            if (index === 0) {
                ktpData.Propinsi = line;
            } else if (index === 1) {
                ktpData.Kabupaten = line;
            }

            if (line.includes('NIK')) {
                ktpData.NIK = line.split(': ')[1];
            } else if (line.includes('Nama')) {
                ktpData.Nama = line.split(': ')[1];
            } else if (line.includes('Tempat/Tgl Lahir')) {
                let currData = line.split(': ');
                let tempatTanggalLahir = currData[1].split(', ');
                let tempatLahir = tempatTanggalLahir[0];
                let tanggalLahir = tempatTanggalLahir[1].substring(0, 10);
                ktpData.TglLahir = tanggalLahir;
                ktpData.TempatLahir = tempatLahir;
            } else if (line.includes('Jenis Kelamin')) {
                let currData = line.split(': ');
                let currData1 = currData[1].split(' — ');
                ktpData.JenisKelamin = currData1[0];
                ktpData.GolDarah = currData1[1].split(':')[1];
            } else if (line.includes('Alamat')) {
                ktpData.Alamat = line.split(': ')[1];
            } else if (line.includes('Gol. Darah')) {
                let currData = line.split(': ');
                let currData1 = currData[1].split(' — ');
            } else if (line.includes('Agama')) {
                ktpData.Agama = line.split(': ')[1];
            } else if (line.includes('Status Perkawinan')) {
                ktpData.StatusPerkawinan = line.split(': ')[1];
            } else if (line.includes('Pekerjaan')) {
                ktpData.Pekerjaan = line.split(': ')[1];
            } else if (line.includes('Kewarganegaraan')) {
                ktpData.Kewarganegaraan = line.split(': ')[1].substring(0, 3);
            } else if (line.includes('Berlaku Hingga')) {
                ktpData.BerlakuHingga = line.split(': ')[1].substring(0, 10);
            }
        });

        console.log('KTP Data:', ktpData);
    } catch (error) {
        console.error('Error:', error);
    }
}

// Replace 'media/ktp1.jpeg' with the path to your KTP image file
recognizeKTP('media/ktp1.jpeg');

Komentar

Postingan populer dari blog ini

Node.js Telegram Bot API send an image with text

Node.js Telegram BOT retrieve data from API

WhatsApp Web login QR code in an HTML page using whatsapp-web.js