Preview (top) + parsed data (bottom). Includes Malaysia-specific parsing, extra languages, server-side sample, and CSV/JSON export.
You can run OCR on a server (Node.js + Tesseract or OCR API) to handle heavy loads, improve pre-processing, or use paid OCR services.
// Install: npm i express multer node-tesseract-ocr
const express = require('express');
const multer = require('multer');
const ocr = require('node-tesseract-ocr');
const upload = multer({ dest: 'uploads/' });
const app = express();
app.post('/upload', upload.single('image'), async (req, res) => {
try{
const config = { lang: 'eng+msa', oem: 1, psm: 3 };
const text = await ocr.recognize(req.file.path, config);
res.json({ text });
}catch(err){ res.status(500).json({ error: err.message }) }
});
app.listen(3000);
Tip: On server you can run OpenCV pre-processing (deskew, denoise, adaptive threshold) then feed the cleaned image to OCR for much better results.