How To
Menggunakan Node.js
Menggunakan native addon N-API RustO! pada aplikasi server dan desktop Node.js.
Paket @rustors/node menyediakan binding N-API native berkecepatan tinggi untuk Node.js, langsung memanggil engine RustO! murni Rust tanpa overhead proses tambahan (child process) atau IPC.
Instalasi
npm install @rustors/node
1. Inisialisasi Engine
Inisialisasi engine satu kali dengan konfigurasi JSON yang menentukan path model deteksi, rekognisi, dan kamus:
const { RustO } = require('@rustors/node');
const config = {
detection: {
model_path: 'models/PPOCR_v6/det.rten'
},
recognition: {
model_path: 'models/PPOCR_v6/rec.rten',
dict_path: 'models/PPOCR_v6/dict.txt'
}
};
const engine = new RustO(JSON.stringify(config));
2. Deteksi & Rekognisi Teks
Dari File Gambar
const options = {
text_score: 0.5,
output: 'lines'
};
const results = engine.detectTextFile('receipt.jpg', JSON.stringify(options));
results.forEach((item, index) => {
console.log(`[Baris ${index + 1}] ${item.text} (${(item.score * 100).toFixed(1)}%)`);
console.log(` Koordinat Box: ${JSON.stringify(item.box_points)}`);
});
Dari Buffer Memori
const fs = require('fs');
const imageBuffer = fs.readFileSync('document.png');
const results = engine.detectTextData(imageBuffer, JSON.stringify({}));
console.log(`Terdeteksi ${results.length} baris teks.`);
3. Rekonstruksi Tata Letak Spasial
Untuk mempertahankan format tabel, kolom, struk belanja, dan faktur:
const spatialText = engine.detectTextFileSpatial('invoice.png', JSON.stringify({
line_y_threshold: 0.5,
word_x_threshold: 0.4
}));
console.log('--- Dokumen Tata Letak Spasial ---');
console.log(spatialText);