Api Reference

OcrRunOptions

Referensi opsi keluaran per permintaan, batas ukuran gambar, parameter detektor DBNet, dan pascapemrosesan.

OcrRunOptions (DetectTextOptions pada React Native) mengonfigurasi parameter runtime untuk setiap eksekusi OCR individual. Opsi ini berlaku untuk satu pemanggilan detectText tanpa mengubah sesi model yang telah diinisialisasi.

Rendering diagram...

Skema Wire JSON Kanonikal

{
  "output": "lines",
  "lineYThreshold": 0.5,
  "wordXThreshold": 0.4,
  "textScore": 0.5,
  "classification": false,
  "orientation": false,
  "minHeight": 32,
  "maxSideLen": 1600,
  "minSideLen": 64,
  "widthHeightRatio": -1,
  "detection": {
    "limitSideLen": 960,
    "limitType": "max",
    "mean": [0.485, 0.456, 0.406],
    "std": [0.229, 0.224, 0.225]
  },
  "postprocess": {
    "threshold": 0.3,
    "boxThreshold": 0.6,
    "maxCandidates": 1000,
    "unclipRatio": 2.0,
    "useDilation": true
  }
}

Spesifikasi Parameter

1. Kontrol Mode Keluaran & Pengelompokan

OpsiTipeNilai DefaultRentang Nilai ValidDeskripsi
outputstring / enumlineslines, words, spatialMemilih baris terstruktur, per kata, atau tata letak spasial.
lineYThresholdfloat0.5>= 0.0Pengali toleransi vertikal untuk mengelompokkan kotak menjadi baris.
wordXThresholdfloat0.4>= 0.0Pengali lebar karakter untuk perataan kolom dan jarak antar kata.
textScorefloatPreset Mesin (0.5)0.0 .. 1.0Batas minimum skor kepercayaan pengenalan teks.
classificationbooleanfalsetrue, falseMengevaluasi pengklasifikasi baris teks 180° (perlu model CLS).
orientationbooleanfalsetrue, falseMengevaluasi pengklasifikasi orientasi halaman penuh (perlu model Orient).

2. Batas & Penskalaan Gambar

OpsiTipeNilai DefaultRentang Nilai ValidDeskripsi
minSideLenfloat64.0> 0.0Batas panjang sisi minimum gambar saat diskalakan.
maxSideLenfloat1600.0minSideLen <= maxSideLenBatas panjang sisi maksimum gambar (mencegah OOM pada foto 48MP).
minHeightfloat32.0> 0.0Tinggi vertikal minimum untuk bantalan morfologi (padding).
widthHeightRatiofloat-1.0> 0.0 atau -1.0Rasio aspek bantalan pengenalan. -1 mempertahankan rasio asli.

3. Penyetelan Masukan Detektor (detection)

OpsiTipeNilai DefaultRentang Nilai ValidDeskripsi
limitSideLenintegerPreset (736 / 960)1 .. 32767Target dimensi penskalaan masukan untuk detektor DBNet.
limitTypestringPreset (min / max)min, maxmin: perbesar sisi terpendek. max: batasi sisi terpanjang.
meanfloat[3][0.485, 0.456, 0.406]3 angka berhinggaNilai rata-rata (mean) normalisasi kanal warna RGB.
stdfloat[3][0.229, 0.224, 0.225]3 angka bukan nolStandar deviasi (std) normalisasi kanal warna RGB.

4. Pascapemrosesan Detektor (postprocess)

OpsiTipeNilai DefaultRentang Nilai ValidDeskripsi
thresholdfloatPreset (0.3)0.0 .. 1.0Ambang probabilitas binarisasi piksel.
boxThresholdfloatPreset (0.6 / 0.5)0.0 .. 1.0Ambang batas skor kepercayaan rata-rata poligon kandidat teks.
maxCandidatesinteger1000>= 1Jumlah maksimum kontur poligon yang dipertahankan.
unclipRatiofloatPreset (2.0 / 1.5)> 0.0Rasio ekspansi poligon Vatti untuk menangkap seluruh goresan huruf.
useDilationbooleanPreset (true / false)true, falseMenerapkan dilatasi morfologi 2×2 untuk teks redup/putus.

Contoh di Berbagai Bahasa

Pada Rust

use rusto::{DetectionRunOptions, OcrRunOptions, OutputGranularity, PostprocessRunOptions};

let options = OcrRunOptions {
    output: OutputGranularity::Words,
    text_score: Some(0.55),
    line_y_threshold: Some(0.5),
    word_x_threshold: Some(0.4),
    max_side_len: Some(1600.0),
    detection: Some(DetectionRunOptions {
        limit_side_len: Some(960),
        limit_type: Some("max".into()),
        ..Default::default()
    }),
    postprocess: Some(PostprocessRunOptions {
        use_dilation: Some(true),
        unclip_ratio: Some(2.0),
        ..Default::default()
    }),
    ..Default::default()
};

Pada .NET / C#

using RustODotnet;

var options = new OcrRunOptions
{
    Output = OutputGranularity.Words,
    TextScore = 0.55f,
    LineYThreshold = 0.5f,
    WordXThreshold = 0.4f,
    MaxSideLen = 1600f,
    Detection = new DetectionRunOptions
    {
        LimitSideLen = 960,
        LimitType = "max"
    },
    Postprocess = new PostprocessRunOptions
    {
        UseDilation = true,
        UnclipRatio = 2.0f
    }
};

Pada Swift (iOS)

import RustO

let options = OcrRunOptions(
    output: .words,
    lineYThreshold: 0.5,
    wordXThreshold: 0.4,
    textScore: 0.55,
    maxSideLen: 1600,
    detection: DetectionRunOptions(limitSideLen: 960, limitType: "max"),
    postprocess: PostprocessRunOptions(useDilation: true, unclipRatio: 2.0)
)

Pada Kotlin (Android)

import com.byrizki.rusto.*

val options = OcrRunOptions(
    output = OutputGranularity.WORDS,
    lineYThreshold = 0.5f,
    wordXThreshold = 0.4f,
    textScore = 0.55f,
    maxSideLen = 1600f,
    detection = DetectionRunOptions(limitSideLen: 960, limitType = "max"),
    postprocess = PostprocessRunOptions(useDilation = true, unclipRatio = 2.0f)
)

Pada React Native

import { DetectTextOptions } from '@rustors/react-native';

const options: DetectTextOptions = {
  output: 'words',
  lineYThreshold: 0.5,
  wordXThreshold: 0.4,
  textScore: 0.55,
  maxSideLen: 1600,
  detection: {
    limitSideLen: 960,
    limitType: 'max',
  },
  postprocess: {
    useDilation: true,
    unclipRatio: 2.0,
  },
};