PHP code example of devsyril / tg-cni-reader

1. Go to this page and download the library: Download devsyril/tg-cni-reader library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

devsyril / tg-cni-reader example snippets



TgDocumentProcessor\Features\DocumentProcessorFactory;
use TgDocumentProcessor\Models\DocumentType;

// Configurer Tesseract
$tesseractPath = 'C:\Program Files\Tesseract-OCR\tesseract.exe'; // Windows
// $tesseractPath = '/usr/bin/tesseract';                         // Linux / macOS

// Créer la factory (l'ImageReader est créé automatiquement)
$factory = new DocumentProcessorFactory();

// Créer un processeur pour le type de document souhaité
$processor = $factory->create(DocumentType::CNI);

use TgDocumentProcessor\Tools\ImageReader;

// Avec ImageReader personnalisé
$imageReader = new ImageReader($tesseractPath, 'fra', __DIR__ . '/tessdata');
$factory = new DocumentProcessorFactory($imageReader);
$processor = $factory->create(DocumentType::CNI);

// Depuis deux images (recto + verso)
$result = $processor->process('recto.jpeg', 'verso.jpeg');

// Depuis un PDF
$result = $processor->process('carte_identite.pdf');

// Depuis une seule image contenant les deux faces
$result = $processor->process('recto_verso.jpeg');

echo $result->get('card_number')->value;     
echo $result->get('last_name')->value;        
echo $result->get('first_name')->value;       
echo $result->get('birth_date')->value;       
echo $result->get('birth_place')->value;      
echo $result->get('blood_type')->value;       
echo $result->get('expiry_date')->value;     

$imageReader = new ImageReader($tesseractPath, 'fra', __DIR__ . '/tessdata');
$factory = new DocumentProcessorFactory($imageReader);
$processor = $factory->create(DocumentType::DRIVER_LICENSE);

// Depuis deux images (recto + verso)
$result = $processor->process('permis_recto.jpeg', 'permis_verso.jpeg');

// Depuis un PDF
$result = $processor->process('permis.pdf');

echo $result->get('license_number')->value;   
echo $result->get('last_name')->value;        
echo $result->get('first_name')->value;        
echo $result->get('birth_date')->value;        
echo $result->get('categories')->value;        
echo $result->get('expiry_date')->value;       

$imageReader = new ImageReader($tesseractPath, 'fra', __DIR__ . '/tessdata');
$factory = new DocumentProcessorFactory($imageReader);
$processor = $factory->create(DocumentType::PASSPORT);

// Depuis une seule image (pas de verso)
$result = $processor->process('passeport.png');

// Depuis un PDF
$result = $processor->process('passeport.pdf');

echo $result->get('passport_number')->value;  
echo $result->get('last_name')->value;         
echo $result->get('first_name')->value;       
echo $result->get('birth_date')->value;        
echo $result->get('expiry_date')->value;       
echo $result->get('issuing_country')->value;  
echo $result->get('nationality')->value;      

$imageReader = new ImageReader($tesseractPath, 'fra', __DIR__ . '/tessdata');
$factory = new DocumentProcessorFactory($imageReader);

// La factory analyse l'image et choisit le bon driver automatiquement
$processor = $factory->autoDetect('document.jpeg');
$result = $processor->process('document.jpeg');

echo $result->type->name; // CNI, PASSPORT ou DRIVER_LICENSE

$result = $processor->process('recto.jpeg', 'verso.jpeg');

// Accès direct à un champ
$cardNumber = $result->get('card_number');
echo $cardNumber->value; 
echo $cardNumber->stat;

// Raccourci pour la valeur seule
echo $result->getValue('last_name'); 

// Indicateurs globaux
echo $result->isExpired ? 'Expiré' : 'Valide';
echo $result->isValid ? 'MRZ OK' : 'MRZ invalide';