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);