[{"data":1,"prerenderedAt":618},["ShallowReactive",2],{"navigation_docs_en":3,"-en-how-to-use-golang":173,"-en-how-to-use-golang-surround":613},[4,30,109,153],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","\u002Fen\u002Fgetting-started","en\u002F01.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Introduction","\u002Fen\u002Fgetting-started\u002Fintroduction","en\u002F01.getting-started\u002F1.introduction","i-ph-rocket",{"title":15,"path":16,"stem":17,"icon":18},"Installation","\u002Fen\u002Fgetting-started\u002Finstallation","en\u002F01.getting-started\u002F2.installation","i-ph-download",{"title":20,"path":21,"stem":22,"icon":23},"Quick Start","\u002Fen\u002Fgetting-started\u002Fquick-start","en\u002F01.getting-started\u002F3.quick-start","i-ph-play",{"title":25,"path":26,"stem":27,"icon":28},"Live Demo","\u002Fen\u002Fgetting-started\u002Flive-demo","en\u002F01.getting-started\u002F4.live-demo","i-ph-sparkle",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"How To","\u002Fen\u002Fhow-to","en\u002F02.how-to",[35,40,45,50,55,60,65,70,75,79,84,89,94,99,104],{"title":36,"path":37,"stem":38,"icon":39},"Use Rust","\u002Fen\u002Fhow-to\u002Fuse-rust","en\u002F02.how-to\u002F00.use-rust","simple-icons-rust",{"title":41,"path":42,"stem":43,"icon":44},"Use .NET \u002F C#","\u002Fen\u002Fhow-to\u002Fuse-csharp","en\u002F02.how-to\u002F01.use-csharp","simple-icons-dotnet",{"title":46,"path":47,"stem":48,"icon":49},"Use React Native","\u002Fen\u002Fhow-to\u002Fuse-react-native","en\u002F02.how-to\u002F02.use-react-native","simple-icons-react",{"title":51,"path":52,"stem":53,"icon":54},"Use iOS (Swift)","\u002Fen\u002Fhow-to\u002Fuse-ios-swift","en\u002F02.how-to\u002F03.use-ios-swift","simple-icons-apple",{"title":56,"path":57,"stem":58,"icon":59},"Use Android (Kotlin)","\u002Fen\u002Fhow-to\u002Fuse-android-kotlin","en\u002F02.how-to\u002F04.use-android-kotlin","simple-icons-android",{"title":61,"path":62,"stem":63,"icon":64},"Use C FFI","\u002Fen\u002Fhow-to\u002Fuse-c-ffi","en\u002F02.how-to\u002F05.use-c-ffi","simple-icons-c",{"title":66,"path":67,"stem":68,"icon":69},"Use CLI","\u002Fen\u002Fhow-to\u002Fuse-cli","en\u002F02.how-to\u002F06.use-cli","simple-icons-gnubash",{"title":71,"path":72,"stem":73,"icon":74},"Use Web","\u002Fen\u002Fhow-to\u002Fuse-web","en\u002F02.how-to\u002F07.use-web","simple-icons-javascript",{"title":76,"path":77,"stem":78,"icon":49},"Use React","\u002Fen\u002Fhow-to\u002Fuse-react","en\u002F02.how-to\u002F08.use-react",{"title":80,"path":81,"stem":82,"icon":83},"Use Node.js","\u002Fen\u002Fhow-to\u002Fuse-node","en\u002F02.how-to\u002F09.use-node","simple-icons-nodedotjs",{"title":85,"path":86,"stem":87,"icon":88},"Use Python","\u002Fen\u002Fhow-to\u002Fuse-python","en\u002F02.how-to\u002F10.use-python","simple-icons-python",{"title":90,"path":91,"stem":92,"icon":93},"Use Golang","\u002Fen\u002Fhow-to\u002Fuse-golang","en\u002F02.how-to\u002F11.use-golang","simple-icons-go",{"title":95,"path":96,"stem":97,"icon":98},"Use Java & JVM","\u002Fen\u002Fhow-to\u002Fuse-java","en\u002F02.how-to\u002F12.use-java","simple-icons-openjdk",{"title":100,"path":101,"stem":102,"icon":103},"Use Flutter & Dart","\u002Fen\u002Fhow-to\u002Fuse-flutter","en\u002F02.how-to\u002F13.use-flutter","simple-icons-flutter",{"title":105,"path":106,"stem":107,"icon":108},"Use Decoded RGB Input","\u002Fen\u002Fhow-to\u002Fuse-decoded-rgb","en\u002F02.how-to\u002F14.use-decoded-rgb","lucide-image",{"title":110,"path":111,"stem":112,"children":113,"page":29},"Advance Guide","\u002Fen\u002Fadvance-guide","en\u002F03.advance-guide",[114,119,124,129,134,139,144,149],{"title":115,"path":116,"stem":117,"icon":118},"Models & Tiers","\u002Fen\u002Fadvance-guide\u002Fmodels-and-tiers","en\u002F03.advance-guide\u002F01.models-and-tiers","i-ph-cube",{"title":120,"path":121,"stem":122,"icon":123},"Multilingual OCR","\u002Fen\u002Fadvance-guide\u002Fmultilingual-ocr","en\u002F03.advance-guide\u002F02.multilingual-ocr","i-ph-translate",{"title":125,"path":126,"stem":127,"icon":128},"Spatial Layout Reconstruction","\u002Fen\u002Fadvance-guide\u002Fspatial-layout-reconstruction","en\u002F03.advance-guide\u002F03.spatial-layout-reconstruction","i-ph-layout",{"title":130,"path":131,"stem":132,"icon":133},"Image Preprocessing & Tuning","\u002Fen\u002Fadvance-guide\u002Fimage-preprocessing-and-tuning","en\u002F03.advance-guide\u002F04.image-preprocessing-and-tuning","i-ph-sliders",{"title":135,"path":136,"stem":137,"icon":138},"Classification & Orientation","\u002Fen\u002Fadvance-guide\u002Fclassification-and-orientation","en\u002F03.advance-guide\u002F05.classification-and-orientation","i-ph-arrows-clockwise",{"title":140,"path":141,"stem":142,"icon":143},"Performance & Benchmarks","\u002Fen\u002Fadvance-guide\u002Fperformance-and-benchmarks","en\u002F03.advance-guide\u002F06.performance-and-benchmarks","i-ph-chart-line-up",{"title":145,"path":146,"stem":147,"icon":148},"Troubleshooting","\u002Fen\u002Fadvance-guide\u002Ftroubleshooting","en\u002F03.advance-guide\u002F07.troubleshooting","i-ph-wrench",{"title":150,"path":151,"stem":152,"icon":138},"v0.2 to v0.3","\u002Fen\u002Fadvance-guide\u002Fmigration-guide","en\u002F03.advance-guide\u002F08.migration-guide",{"title":154,"path":155,"stem":156,"children":157,"page":29},"Api Reference","\u002Fen\u002Fapi-reference","en\u002F04.api-reference",[158,163,168],{"title":159,"path":160,"stem":161,"icon":162},"InitializeConfig","\u002Fen\u002Fapi-reference\u002Finitialize-config","en\u002F04.api-reference\u002F01.initialize-config","i-ph-code-block",{"title":164,"path":165,"stem":166,"icon":167},"OcrRunOptions","\u002Fen\u002Fapi-reference\u002Focr-run-options","en\u002F04.api-reference\u002F02.ocr-run-options","i-ph-faders",{"title":169,"path":170,"stem":171,"icon":172},"TextResult & Output Modes","\u002Fen\u002Fapi-reference\u002Ftext-result-and-output","en\u002F04.api-reference\u002F03.text-result-and-output","i-ph-textbox",{"id":174,"title":90,"body":175,"description":605,"extension":606,"links":607,"meta":608,"navigation":609,"path":91,"seo":610,"stem":92,"__hash__":612},"docs_en\u002Fen\u002F02.how-to\u002F11.use-golang.md",{"type":176,"value":177,"toc":596},"minimark",[178,199,203,228,243,246,250,253,422,424,428,433,485,489,547,549,553,556,592],[179,180,181,182,186,187,190,191,194,195,198],"p",{},"The ",[183,184,185],"code",{},"github.com\u002Fbyrizki\u002Frusto-rs\u002Fpackages\u002Fgo"," module provides native Go bindings via Cgo. The module embeds dynamic linker runtime search paths (",[183,188,189],{},"-Wl,-rpath","), allowing Go binaries and unit tests to locate ",[183,192,193],{},"librusto"," without manual ",[183,196,197],{},"LD_LIBRARY_PATH"," configuration.",[200,201,15],"h2",{"id":202},"installation",[204,205,210],"pre",{"className":206,"code":207,"language":208,"meta":209,"style":209},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark monokai","go get github.com\u002Fbyrizki\u002Frusto-rs\u002Fpackages\u002Fgo\n","bash","",[183,211,212],{"__ignoreMap":209},[213,214,217,221,225],"span",{"class":215,"line":216},"line",1,[213,218,220],{"class":219},"sR7ES","go",[213,222,224],{"class":223},"sLACW"," get",[213,226,227],{"class":223}," github.com\u002Fbyrizki\u002Frusto-rs\u002Fpackages\u002Fgo\n",[179,229,230,231,234,235,238,239,242],{},"Ensure ",[183,232,233],{},"librusto.so"," (Linux), ",[183,236,237],{},"librusto.dylib"," (macOS), or ",[183,240,241],{},"rusto.dll"," (Windows) is built and located in the library search path.",[244,245],"hr",{},[200,247,249],{"id":248},"_1-engine-initialization","1. Engine Initialization",[179,251,252],{},"Initialize the engine by passing a JSON configuration string:",[204,254,257],{"className":255,"code":256,"language":220,"meta":209,"style":209},"language-go shiki shiki-themes material-theme-lighter github-light github-dark monokai","package main\n\nimport (\n    \"encoding\u002Fjson\"\n    \"fmt\"\n    \"log\"\n\n    \"github.com\u002Fbyrizki\u002Frusto-rs\u002Fpackages\u002Fgo\"\n)\n\nfunc main() {\n    config := map[string]interface{}{\n        \"detection\": map[string]string{\n            \"model_path\": \"models\u002FPPOCR_v6\u002Fdet.rten\",\n        },\n        \"recognition\": map[string]string{\n            \"model_path\": \"models\u002FPPOCR_v6\u002Frec.rten\",\n            \"dict_path\":  \"models\u002FPPOCR_v6\u002Fdict.txt\",\n        },\n    }\n    configBytes, _ := json.Marshal(config)\n\n    engine, err := rusto.New(string(configBytes))\n    if err != nil {\n        log.Fatalf(\"Failed to initialize RustO: %v\", err)\n    }\n    defer engine.Close()\n}\n",[183,258,259,264,271,277,283,289,295,300,306,312,317,323,329,335,341,347,353,359,365,370,376,382,387,393,399,405,410,416],{"__ignoreMap":209},[213,260,261],{"class":215,"line":216},[213,262,263],{},"package main\n",[213,265,267],{"class":215,"line":266},2,[213,268,270],{"emptyLinePlaceholder":269},true,"\n",[213,272,274],{"class":215,"line":273},3,[213,275,276],{},"import (\n",[213,278,280],{"class":215,"line":279},4,[213,281,282],{},"    \"encoding\u002Fjson\"\n",[213,284,286],{"class":215,"line":285},5,[213,287,288],{},"    \"fmt\"\n",[213,290,292],{"class":215,"line":291},6,[213,293,294],{},"    \"log\"\n",[213,296,298],{"class":215,"line":297},7,[213,299,270],{"emptyLinePlaceholder":269},[213,301,303],{"class":215,"line":302},8,[213,304,305],{},"    \"github.com\u002Fbyrizki\u002Frusto-rs\u002Fpackages\u002Fgo\"\n",[213,307,309],{"class":215,"line":308},9,[213,310,311],{},")\n",[213,313,315],{"class":215,"line":314},10,[213,316,270],{"emptyLinePlaceholder":269},[213,318,320],{"class":215,"line":319},11,[213,321,322],{},"func main() {\n",[213,324,326],{"class":215,"line":325},12,[213,327,328],{},"    config := map[string]interface{}{\n",[213,330,332],{"class":215,"line":331},13,[213,333,334],{},"        \"detection\": map[string]string{\n",[213,336,338],{"class":215,"line":337},14,[213,339,340],{},"            \"model_path\": \"models\u002FPPOCR_v6\u002Fdet.rten\",\n",[213,342,344],{"class":215,"line":343},15,[213,345,346],{},"        },\n",[213,348,350],{"class":215,"line":349},16,[213,351,352],{},"        \"recognition\": map[string]string{\n",[213,354,356],{"class":215,"line":355},17,[213,357,358],{},"            \"model_path\": \"models\u002FPPOCR_v6\u002Frec.rten\",\n",[213,360,362],{"class":215,"line":361},18,[213,363,364],{},"            \"dict_path\":  \"models\u002FPPOCR_v6\u002Fdict.txt\",\n",[213,366,368],{"class":215,"line":367},19,[213,369,346],{},[213,371,373],{"class":215,"line":372},20,[213,374,375],{},"    }\n",[213,377,379],{"class":215,"line":378},21,[213,380,381],{},"    configBytes, _ := json.Marshal(config)\n",[213,383,385],{"class":215,"line":384},22,[213,386,270],{"emptyLinePlaceholder":269},[213,388,390],{"class":215,"line":389},23,[213,391,392],{},"    engine, err := rusto.New(string(configBytes))\n",[213,394,396],{"class":215,"line":395},24,[213,397,398],{},"    if err != nil {\n",[213,400,402],{"class":215,"line":401},25,[213,403,404],{},"        log.Fatalf(\"Failed to initialize RustO: %v\", err)\n",[213,406,408],{"class":215,"line":407},26,[213,409,375],{},[213,411,413],{"class":215,"line":412},27,[213,414,415],{},"    defer engine.Close()\n",[213,417,419],{"class":215,"line":418},28,[213,420,421],{},"}\n",[244,423],{},[200,425,427],{"id":426},"_2-text-recognition","2. Text Recognition",[429,430,432],"h3",{"id":431},"from-filesystem-path","From Filesystem Path",[204,434,436],{"className":255,"code":435,"language":220,"meta":209,"style":209},"results, err := engine.DetectTextFile(\"receipt.jpg\", \"{}\")\nif err != nil {\n    log.Fatalf(\"Detection failed: %v\", err)\n}\n\nfor i, line := range results {\n    fmt.Printf(\"[%d] (Score: %0.2f) %s\\n\", i+1, line.Score, line.Text)\n    fmt.Printf(\"    Frame: left=%0.1f, top=%0.1f, w=%0.1f, h=%0.1f\\n\",\n        line.Frame.Left, line.Frame.Top, line.Frame.Width, line.Frame.Height)\n}\n",[183,437,438,443,448,453,457,461,466,471,476,481],{"__ignoreMap":209},[213,439,440],{"class":215,"line":216},[213,441,442],{},"results, err := engine.DetectTextFile(\"receipt.jpg\", \"{}\")\n",[213,444,445],{"class":215,"line":266},[213,446,447],{},"if err != nil {\n",[213,449,450],{"class":215,"line":273},[213,451,452],{},"    log.Fatalf(\"Detection failed: %v\", err)\n",[213,454,455],{"class":215,"line":279},[213,456,421],{},[213,458,459],{"class":215,"line":285},[213,460,270],{"emptyLinePlaceholder":269},[213,462,463],{"class":215,"line":291},[213,464,465],{},"for i, line := range results {\n",[213,467,468],{"class":215,"line":297},[213,469,470],{},"    fmt.Printf(\"[%d] (Score: %0.2f) %s\\n\", i+1, line.Score, line.Text)\n",[213,472,473],{"class":215,"line":302},[213,474,475],{},"    fmt.Printf(\"    Frame: left=%0.1f, top=%0.1f, w=%0.1f, h=%0.1f\\n\",\n",[213,477,478],{"class":215,"line":308},[213,479,480],{},"        line.Frame.Left, line.Frame.Top, line.Frame.Width, line.Frame.Height)\n",[213,482,483],{"class":215,"line":314},[213,484,421],{},[429,486,488],{"id":487},"from-in-memory-bytes-buffer","From In-Memory Bytes Buffer",[204,490,492],{"className":255,"code":491,"language":220,"meta":209,"style":209},"import \"os\"\n\nimageBytes, err := os.ReadFile(\"document.png\")\nif err != nil {\n    log.Fatal(err)\n}\n\nresults, err := engine.DetectTextData(imageBytes, \"{}\")\nif err != nil {\n    log.Fatal(err)\n}\nfmt.Printf(\"Detected %d text segments\\n\", len(results))\n",[183,493,494,499,503,508,512,517,521,525,530,534,538,542],{"__ignoreMap":209},[213,495,496],{"class":215,"line":216},[213,497,498],{},"import \"os\"\n",[213,500,501],{"class":215,"line":266},[213,502,270],{"emptyLinePlaceholder":269},[213,504,505],{"class":215,"line":273},[213,506,507],{},"imageBytes, err := os.ReadFile(\"document.png\")\n",[213,509,510],{"class":215,"line":279},[213,511,447],{},[213,513,514],{"class":215,"line":285},[213,515,516],{},"    log.Fatal(err)\n",[213,518,519],{"class":215,"line":291},[213,520,421],{},[213,522,523],{"class":215,"line":297},[213,524,270],{"emptyLinePlaceholder":269},[213,526,527],{"class":215,"line":302},[213,528,529],{},"results, err := engine.DetectTextData(imageBytes, \"{}\")\n",[213,531,532],{"class":215,"line":308},[213,533,447],{},[213,535,536],{"class":215,"line":314},[213,537,516],{},[213,539,540],{"class":215,"line":319},[213,541,421],{},[213,543,544],{"class":215,"line":325},[213,545,546],{},"fmt.Printf(\"Detected %d text segments\\n\", len(results))\n",[244,548],{},[200,550,552],{"id":551},"_3-spatial-layout-reconstruction","3. Spatial Layout Reconstruction",[179,554,555],{},"To reconstruct formatted 2D text layouts:",[204,557,559],{"className":255,"code":558,"language":220,"meta":209,"style":209},"spatialText, err := engine.DetectTextFileSpatial(\"invoice.png\", `{\"line_y_threshold\": 0.5}`)\nif err != nil {\n    log.Fatal(err)\n}\n\nfmt.Println(\"--- Spatial Output ---\")\nfmt.Println(spatialText)\n",[183,560,561,566,570,574,578,582,587],{"__ignoreMap":209},[213,562,563],{"class":215,"line":216},[213,564,565],{},"spatialText, err := engine.DetectTextFileSpatial(\"invoice.png\", `{\"line_y_threshold\": 0.5}`)\n",[213,567,568],{"class":215,"line":266},[213,569,447],{},[213,571,572],{"class":215,"line":273},[213,573,516],{},[213,575,576],{"class":215,"line":279},[213,577,421],{},[213,579,580],{"class":215,"line":285},[213,581,270],{"emptyLinePlaceholder":269},[213,583,584],{"class":215,"line":291},[213,585,586],{},"fmt.Println(\"--- Spatial Output ---\")\n",[213,588,589],{"class":215,"line":297},[213,590,591],{},"fmt.Println(spatialText)\n",[593,594,595],"style",{},"html pre.shiki code .sR7ES, html code.shiki .sR7ES{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}html pre.shiki code .sLACW, html code.shiki .sLACW{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html .sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}html.sepia .shiki span {color: var(--shiki-sepia);background: var(--shiki-sepia-bg);font-style: var(--shiki-sepia-font-style);font-weight: var(--shiki-sepia-font-weight);text-decoration: var(--shiki-sepia-text-decoration);}",{"title":209,"searchDepth":266,"depth":266,"links":597},[598,599,600,604],{"id":202,"depth":266,"text":15},{"id":248,"depth":266,"text":249},{"id":426,"depth":266,"text":427,"children":601},[602,603],{"id":431,"depth":273,"text":432},{"id":487,"depth":273,"text":488},{"id":551,"depth":266,"text":552},"Using RustO! pure-Rust OCR engine in Go applications via Cgo.","md",null,{},{"icon":93},{"title":611,"description":605},"Use Golang - RustO!","hDp5RB0f9MNq0eRI1vij3beWkNpX8xPENFnVhY8RW2A",[614,616],{"title":85,"path":86,"stem":87,"description":615,"icon":88,"children":-1},"Using the native UniFFI-powered RustO! OCR library in Python.",{"title":95,"path":96,"stem":97,"description":617,"icon":98,"children":-1},"Using the native RustO! OCR engine in Java, Kotlin, and Scala applications via JNA.",1792905888954]