65 lines
1.9 KiB
JavaScript
65 lines
1.9 KiB
JavaScript
const express = require('express');
|
|
const multer = require('multer');
|
|
const tesseract = require('tesseract.js');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
// Configure multer for file upload
|
|
const storage = multer.diskStorage({
|
|
destination: (req, file, cb) => {
|
|
cb(null, './uploads/pan/');
|
|
},
|
|
filename: (req, file, cb) => {
|
|
const timestamp = Date.now();
|
|
cb(null, `${timestamp}-${file.originalname}`);
|
|
},
|
|
});
|
|
|
|
const upload = multer({ storage });
|
|
|
|
const router = express.Router();
|
|
|
|
// Basic PAN format validation (simple regex)
|
|
const isValidPan = (pan) => {
|
|
const panRegex = /^[A-Z]{5}[0-9]{4}[A-Z]{1}$/;
|
|
return panRegex.test(pan);
|
|
};
|
|
|
|
// Verify PAN number and compare with image text
|
|
router.post('/verify', upload.single('panImage'), async (req, res) => {
|
|
try {
|
|
const { pan } = req.body;
|
|
const imagePath = req.file.path; // Path to the uploaded image
|
|
console.log('Received PAN:', pan);
|
|
console.log('Image Path:', imagePath);
|
|
|
|
// Validate PAN format
|
|
if (!isValidPan(pan)) {
|
|
return res.status(400).json({ message: 'Invalid PAN format' });
|
|
}
|
|
|
|
// Perform OCR on the uploaded image to extract the text
|
|
const result = await tesseract.recognize(imagePath, 'eng', {
|
|
logger: (m) => console.log(m),
|
|
});
|
|
|
|
const extractedText = result.data.text.trim(); // The text extracted from the image
|
|
console.log('Extracted PAN from image:', extractedText);
|
|
|
|
// Compare the extracted text with the provided PAN number
|
|
if (extractedText === pan) {
|
|
res.status(200).json({ message: 'PAN verified successfully' });
|
|
} else {
|
|
res.status(400).json({ message: 'PAN number does not match the uploaded image' });
|
|
}
|
|
|
|
// Clean up the uploaded image file after processing (optional)
|
|
fs.unlinkSync(imagePath);
|
|
} catch (error) {
|
|
console.error('Error during PAN verification:', error);
|
|
res.status(500).json({ message: 'Error verifying PAN' });
|
|
}
|
|
});
|
|
|
|
module.exports = router;
|