How To

Menggunakan Golang

Menggunakan engine RustO! murni Rust pada aplikasi Go via Cgo.

Modul github.com/byrizki/rusto-rs/packages/go menyediakan binding native Go via Cgo dengan konfigurasi dynamic linker bawaan (-Wl,-rpath), sehingga binary aplikasi dan unit test dapat menemukan librusto tanpa perlu menyetel LD_LIBRARY_PATH.

Instalasi

go get github.com/byrizki/rusto-rs/packages/go

Pastikan pustaka bersama librusto.so (Linux), librusto.dylib (macOS), atau rusto.dll (Windows) tersedia pada sistem Anda.


1. Inisialisasi Engine

package main

import (
    "encoding/json"
    "fmt"
    "log"

    "github.com/byrizki/rusto-rs/packages/go"
)

func main() {
    config := map[string]interface{}{
        "detection": map[string]string{
            "model_path": "models/PPOCR_v6/det.rten",
        },
        "recognition": map[string]string{
            "model_path": "models/PPOCR_v6/rec.rten",
            "dict_path":  "models/PPOCR_v6/dict.txt",
        },
    }
    configBytes, _ := json.Marshal(config)

    engine, err := rusto.New(string(configBytes))
    if err != nil {
        log.Fatalf("Gagal inisialisasi RustO: %v", err)
    }
    defer engine.Close()

    // Deteksi teks terstruktur
    results, err := engine.DetectTextFile("receipt.jpg", "{}")
    if err != nil {
        log.Fatalf("Deteksi gagal: %v", err)
    }

    for _, item := range results {
        fmt.Printf("[%0.2f] %s\n", item.Score, item.Text)
    }
}