[{"data":1,"prerenderedAt":462},["ShallowReactive",2],{"navigation_docs_id":3,"-id-how-to-use-python":173,"-id-how-to-use-python-surround":457},[4,30,109,153],{"title":5,"path":6,"stem":7,"children":8,"page":29},"Getting Started","\u002Fid\u002Fgetting-started","id\u002F01.getting-started",[9,14,19,24],{"title":10,"path":11,"stem":12,"icon":13},"Pengenalan","\u002Fid\u002Fgetting-started\u002Fintroduction","id\u002F01.getting-started\u002F1.introduction","i-ph-rocket",{"title":15,"path":16,"stem":17,"icon":18},"Instalasi","\u002Fid\u002Fgetting-started\u002Finstallation","id\u002F01.getting-started\u002F2.installation","i-ph-download",{"title":20,"path":21,"stem":22,"icon":23},"Panduan Cepat","\u002Fid\u002Fgetting-started\u002Fquick-start","id\u002F01.getting-started\u002F3.quick-start","i-ph-play",{"title":25,"path":26,"stem":27,"icon":28},"Demo Langsung","\u002Fid\u002Fgetting-started\u002Flive-demo","id\u002F01.getting-started\u002F4.live-demo","i-ph-sparkle",false,{"title":31,"path":32,"stem":33,"children":34,"page":29},"How To","\u002Fid\u002Fhow-to","id\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},"Menggunakan Rust","\u002Fid\u002Fhow-to\u002Fuse-rust","id\u002F02.how-to\u002F00.use-rust","simple-icons-rust",{"title":41,"path":42,"stem":43,"icon":44},"Menggunakan .NET \u002F C#","\u002Fid\u002Fhow-to\u002Fuse-csharp","id\u002F02.how-to\u002F01.use-csharp","simple-icons-dotnet",{"title":46,"path":47,"stem":48,"icon":49},"Menggunakan React Native","\u002Fid\u002Fhow-to\u002Fuse-react-native","id\u002F02.how-to\u002F02.use-react-native","simple-icons-react",{"title":51,"path":52,"stem":53,"icon":54},"Menggunakan iOS (Swift)","\u002Fid\u002Fhow-to\u002Fuse-ios-swift","id\u002F02.how-to\u002F03.use-ios-swift","simple-icons-apple",{"title":56,"path":57,"stem":58,"icon":59},"Menggunakan Android (Kotlin)","\u002Fid\u002Fhow-to\u002Fuse-android-kotlin","id\u002F02.how-to\u002F04.use-android-kotlin","simple-icons-android",{"title":61,"path":62,"stem":63,"icon":64},"Menggunakan C FFI","\u002Fid\u002Fhow-to\u002Fuse-c-ffi","id\u002F02.how-to\u002F05.use-c-ffi","simple-icons-c",{"title":66,"path":67,"stem":68,"icon":69},"Menggunakan CLI","\u002Fid\u002Fhow-to\u002Fuse-cli","id\u002F02.how-to\u002F06.use-cli","simple-icons-gnubash",{"title":71,"path":72,"stem":73,"icon":74},"Menggunakan Web","\u002Fid\u002Fhow-to\u002Fuse-web","id\u002F02.how-to\u002F07.use-web","simple-icons-javascript",{"title":76,"path":77,"stem":78,"icon":49},"Menggunakan React","\u002Fid\u002Fhow-to\u002Fuse-react","id\u002F02.how-to\u002F08.use-react",{"title":80,"path":81,"stem":82,"icon":83},"Menggunakan Node.js","\u002Fid\u002Fhow-to\u002Fuse-node","id\u002F02.how-to\u002F09.use-node","simple-icons-nodedotjs",{"title":85,"path":86,"stem":87,"icon":88},"Menggunakan Python","\u002Fid\u002Fhow-to\u002Fuse-python","id\u002F02.how-to\u002F10.use-python","simple-icons-python",{"title":90,"path":91,"stem":92,"icon":93},"Menggunakan Golang","\u002Fid\u002Fhow-to\u002Fuse-golang","id\u002F02.how-to\u002F11.use-golang","simple-icons-go",{"title":95,"path":96,"stem":97,"icon":98},"Menggunakan Java & JVM","\u002Fid\u002Fhow-to\u002Fuse-java","id\u002F02.how-to\u002F12.use-java","simple-icons-openjdk",{"title":100,"path":101,"stem":102,"icon":103},"Menggunakan Flutter & Dart","\u002Fid\u002Fhow-to\u002Fuse-flutter","id\u002F02.how-to\u002F13.use-flutter","simple-icons-flutter",{"title":105,"path":106,"stem":107,"icon":108},"Menggunakan Input RGB Terdekode","\u002Fid\u002Fhow-to\u002Fuse-decoded-rgb","id\u002F02.how-to\u002F14.use-decoded-rgb","lucide-image",{"title":110,"path":111,"stem":112,"children":113,"page":29},"Advance Guide","\u002Fid\u002Fadvance-guide","id\u002F03.advance-guide",[114,119,124,129,134,139,144,149],{"title":115,"path":116,"stem":117,"icon":118},"Model & Tingkatan (Tiers)","\u002Fid\u002Fadvance-guide\u002Fmodels-and-tiers","id\u002F03.advance-guide\u002F01.models-and-tiers","i-ph-cube",{"title":120,"path":121,"stem":122,"icon":123},"OCR Multibahasa","\u002Fid\u002Fadvance-guide\u002Fmultilingual-ocr","id\u002F03.advance-guide\u002F02.multilingual-ocr","i-ph-translate",{"title":125,"path":126,"stem":127,"icon":128},"Rekonstruksi Tata Letak Spasial","\u002Fid\u002Fadvance-guide\u002Fspatial-layout-reconstruction","id\u002F03.advance-guide\u002F03.spatial-layout-reconstruction","i-ph-layout",{"title":130,"path":131,"stem":132,"icon":133},"Pra-pemrosesan & Tuning Gambar","\u002Fid\u002Fadvance-guide\u002Fimage-preprocessing-and-tuning","id\u002F03.advance-guide\u002F04.image-preprocessing-and-tuning","i-ph-sliders",{"title":135,"path":136,"stem":137,"icon":138},"Klasifikasi & Orientasi","\u002Fid\u002Fadvance-guide\u002Fclassification-and-orientation","id\u002F03.advance-guide\u002F05.classification-and-orientation","i-ph-arrows-clockwise",{"title":140,"path":141,"stem":142,"icon":143},"Performa & Tolok Ukur (Benchmarks)","\u002Fid\u002Fadvance-guide\u002Fperformance-and-benchmarks","id\u002F03.advance-guide\u002F06.performance-and-benchmarks","i-ph-chart-line-up",{"title":145,"path":146,"stem":147,"icon":148},"Pemecahan Masalah (Troubleshooting)","\u002Fid\u002Fadvance-guide\u002Ftroubleshooting","id\u002F03.advance-guide\u002F07.troubleshooting","i-ph-wrench",{"title":150,"path":151,"stem":152,"icon":138},"v0.2 ke v0.3","\u002Fid\u002Fadvance-guide\u002Fmigration-guide","id\u002F03.advance-guide\u002F08.migration-guide",{"title":154,"path":155,"stem":156,"children":157,"page":29},"Api Reference","\u002Fid\u002Fapi-reference","id\u002F04.api-reference",[158,163,168],{"title":159,"path":160,"stem":161,"icon":162},"InitializeConfig","\u002Fid\u002Fapi-reference\u002Finitialize-config","id\u002F04.api-reference\u002F01.initialize-config","i-ph-code-block",{"title":164,"path":165,"stem":166,"icon":167},"OcrRunOptions","\u002Fid\u002Fapi-reference\u002Focr-run-options","id\u002F04.api-reference\u002F02.ocr-run-options","i-ph-faders",{"title":169,"path":170,"stem":171,"icon":172},"TextResult & Mode Keluaran","\u002Fid\u002Fapi-reference\u002Ftext-result-and-output","id\u002F04.api-reference\u002F03.text-result-and-output","i-ph-textbox",{"id":174,"title":85,"body":175,"description":449,"extension":450,"links":451,"meta":452,"navigation":453,"path":86,"seo":454,"stem":87,"__hash__":456},"docs_id\u002Fid\u002F02.how-to\u002F10.use-python.md",{"type":176,"value":177,"toc":443},"minimark",[178,195,199,224,227,231,327,329,333,385,387,391,439],[179,180,181,182,186,187,194],"p",{},"Paket ",[183,184,185],"code",{},"rusto"," menyediakan binding performa tinggi berbasis ",[188,189,193],"a",{"href":190,"rel":191},"https:\u002F\u002Fmozilla.github.io\u002Funiffi-rs\u002F",[192],"nofollow","UniFFI",", memungkinkan aplikasi Python menjalankan OCR murni Rust secepat C tanpa terhambat Python GIL selama inferensi.",[196,197,15],"h2",{"id":198},"instalasi",[200,201,206],"pre",{"className":202,"code":203,"language":204,"meta":205,"style":205},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark monokai","pip install rusto\n","bash","",[183,207,208],{"__ignoreMap":205},[209,210,213,217,221],"span",{"class":211,"line":212},"line",1,[209,214,216],{"class":215},"sR7ES","pip",[209,218,220],{"class":219},"sLACW"," install",[209,222,223],{"class":219}," rusto\n",[225,226],"hr",{},[196,228,230],{"id":229},"_1-inisialisasi-engine","1. Inisialisasi Engine",[200,232,236],{"className":233,"code":234,"language":235,"meta":205,"style":205},"language-python shiki shiki-themes material-theme-lighter github-light github-dark monokai","from rusto import (\n    RustO,\n    InitializeConfig,\n    OcrRunOptions,\n    ImageSource,\n    OutputGranularity,\n)\n\n# Inisialisasi dengan preset PP-OCRv6\nconfig = InitializeConfig.ppv6(\n    det=\"models\u002FPPOCR_v6\u002Fdet.rten\",\n    rec=\"models\u002FPPOCR_v6\u002Frec.rten\",\n    dict=\"models\u002FPPOCR_v6\u002Fdict.txt\"\n)\nengine = RustO.initialize(config)\n","python",[183,237,238,243,249,255,261,267,273,279,286,292,298,304,310,316,321],{"__ignoreMap":205},[209,239,240],{"class":211,"line":212},[209,241,242],{},"from rusto import (\n",[209,244,246],{"class":211,"line":245},2,[209,247,248],{},"    RustO,\n",[209,250,252],{"class":211,"line":251},3,[209,253,254],{},"    InitializeConfig,\n",[209,256,258],{"class":211,"line":257},4,[209,259,260],{},"    OcrRunOptions,\n",[209,262,264],{"class":211,"line":263},5,[209,265,266],{},"    ImageSource,\n",[209,268,270],{"class":211,"line":269},6,[209,271,272],{},"    OutputGranularity,\n",[209,274,276],{"class":211,"line":275},7,[209,277,278],{},")\n",[209,280,282],{"class":211,"line":281},8,[209,283,285],{"emptyLinePlaceholder":284},true,"\n",[209,287,289],{"class":211,"line":288},9,[209,290,291],{},"# Inisialisasi dengan preset PP-OCRv6\n",[209,293,295],{"class":211,"line":294},10,[209,296,297],{},"config = InitializeConfig.ppv6(\n",[209,299,301],{"class":211,"line":300},11,[209,302,303],{},"    det=\"models\u002FPPOCR_v6\u002Fdet.rten\",\n",[209,305,307],{"class":211,"line":306},12,[209,308,309],{},"    rec=\"models\u002FPPOCR_v6\u002Frec.rten\",\n",[209,311,313],{"class":211,"line":312},13,[209,314,315],{},"    dict=\"models\u002FPPOCR_v6\u002Fdict.txt\"\n",[209,317,319],{"class":211,"line":318},14,[209,320,278],{},[209,322,324],{"class":211,"line":323},15,[209,325,326],{},"engine = RustO.initialize(config)\n",[225,328],{},[196,330,332],{"id":331},"_2-deteksi-rekognisi-teks","2. Deteksi & Rekognisi Teks",[200,334,336],{"className":233,"code":335,"language":235,"meta":205,"style":205},"options = OcrRunOptions(\n    output=OutputGranularity.LINES,\n    text_score=0.5\n)\n\nresult = engine.detect_text(ImageSource.PATH(\"receipt.jpg\"), options)\n\nif result.is_STRUCTURED():\n    for item in result.results:\n        print(f\"[{item.score:.2f}] {item.text}\")\n",[183,337,338,343,348,353,357,361,366,370,375,380],{"__ignoreMap":205},[209,339,340],{"class":211,"line":212},[209,341,342],{},"options = OcrRunOptions(\n",[209,344,345],{"class":211,"line":245},[209,346,347],{},"    output=OutputGranularity.LINES,\n",[209,349,350],{"class":211,"line":251},[209,351,352],{},"    text_score=0.5\n",[209,354,355],{"class":211,"line":257},[209,356,278],{},[209,358,359],{"class":211,"line":263},[209,360,285],{"emptyLinePlaceholder":284},[209,362,363],{"class":211,"line":269},[209,364,365],{},"result = engine.detect_text(ImageSource.PATH(\"receipt.jpg\"), options)\n",[209,367,368],{"class":211,"line":275},[209,369,285],{"emptyLinePlaceholder":284},[209,371,372],{"class":211,"line":281},[209,373,374],{},"if result.is_STRUCTURED():\n",[209,376,377],{"class":211,"line":288},[209,378,379],{},"    for item in result.results:\n",[209,381,382],{"class":211,"line":294},[209,383,384],{},"        print(f\"[{item.score:.2f}] {item.text}\")\n",[225,386],{},[196,388,390],{"id":389},"_3-rekonstruksi-tata-letak-spasial","3. Rekonstruksi Tata Letak Spasial",[200,392,394],{"className":233,"code":393,"language":235,"meta":205,"style":205},"spatial_options = OcrRunOptions(\n    output=OutputGranularity.SPATIAL,\n    line_y_threshold=0.5,\n    word_x_threshold=0.4\n)\n\nresult = engine.detect_text(ImageSource.PATH(\"invoice.png\"), spatial_options)\nif result.is_SPATIAL():\n    print(result.text)\n",[183,395,396,401,406,411,416,420,424,429,434],{"__ignoreMap":205},[209,397,398],{"class":211,"line":212},[209,399,400],{},"spatial_options = OcrRunOptions(\n",[209,402,403],{"class":211,"line":245},[209,404,405],{},"    output=OutputGranularity.SPATIAL,\n",[209,407,408],{"class":211,"line":251},[209,409,410],{},"    line_y_threshold=0.5,\n",[209,412,413],{"class":211,"line":257},[209,414,415],{},"    word_x_threshold=0.4\n",[209,417,418],{"class":211,"line":263},[209,419,278],{},[209,421,422],{"class":211,"line":269},[209,423,285],{"emptyLinePlaceholder":284},[209,425,426],{"class":211,"line":275},[209,427,428],{},"result = engine.detect_text(ImageSource.PATH(\"invoice.png\"), spatial_options)\n",[209,430,431],{"class":211,"line":281},[209,432,433],{},"if result.is_SPATIAL():\n",[209,435,436],{"class":211,"line":288},[209,437,438],{},"    print(result.text)\n",[440,441,442],"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":205,"searchDepth":245,"depth":245,"links":444},[445,446,447,448],{"id":198,"depth":245,"text":15},{"id":229,"depth":245,"text":230},{"id":331,"depth":245,"text":332},{"id":389,"depth":245,"text":390},"Menggunakan pustaka RustO! OCR native berbasis UniFFI pada aplikasi Python.","md",null,{},{"icon":88},{"title":455,"description":449},"Menggunakan Python - RustO!","2OBNI35NuJu51Hf8U939yyYKRs61nldQQ2tLVQQny1Y",[458,460],{"title":80,"path":81,"stem":82,"description":459,"icon":83,"children":-1},"Menggunakan native addon N-API RustO! pada aplikasi server dan desktop Node.js.",{"title":90,"path":91,"stem":92,"description":461,"icon":93,"children":-1},"Menggunakan engine RustO! murni Rust pada aplikasi Go via Cgo.",1792905890836]