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

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

Node.js Telegram Bot API send an image with text

Add these security headers to your website