[{"data":1,"prerenderedAt":1773},["ShallowReactive",2],{"navigation_docs_en":3,"-en-advance-guide-migration-guide":173,"-en-advance-guide-migration-guide-surround":1768},[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":150,"body":175,"description":1760,"extension":1761,"links":1762,"meta":1763,"navigation":1764,"path":151,"seo":1765,"stem":152,"__hash__":1767},"docs_en\u002Fen\u002F03.advance-guide\u002F08.migration-guide.md",{"type":176,"value":177,"toc":1738},"minimark",[178,187,190,195,351,353,357,362,365,375,379,390,439,465,467,473,485,489,569,573,748,750,754,757,782,786,794,798,999,1002,1318,1320,1326,1333,1421,1428,1471,1473,1477,1630,1632,1636,1734],[179,180,181,182,186],"p",{},"RustO! ",[183,184,185],"strong",{},"v0.3.0"," is a major architectural release that transitions the entire core engine to pure Rust, eliminates C++\u002FCMake toolchain dependencies, and streamlines the configuration API across all supported languages.",[188,189],"hr",{},[191,192,194],"h2",{"id":193},"quick-upgrade-summary","⚡ Quick Upgrade Summary",[196,197,198,214],"table",{},[199,200,201],"thead",{},[202,203,204,208,211],"tr",{},[205,206,207],"th",{},"Aspect",[205,209,210],{},"v0.2.x",[205,212,213],{},"v0.3.0 (Current)",[215,216,217,241,269,293,319],"tbody",{},[202,218,219,225,228],{},[220,221,222],"td",{},[183,223,224],{},"Core Inference Engine",[220,226,227],{},"Alibaba MNN (requires C++ \u002F CMake)",[220,229,230,240],{},[183,231,232,233],{},"Pure Rust ",[234,235,239],"a",{"href":236,"rel":237},"https:\u002F\u002Fgithub.com\u002Frobertknight\u002Frten",[238],"nofollow","RTen"," (zero C++ toolchain)",[202,242,243,248,255],{},[220,244,245],{},[183,246,247],{},"Model Formats",[220,249,250,251],{},"Proprietary ",[252,253,254],"code",{},".mnn",[220,256,257,258,263,264],{},"FlatBuffers ",[183,259,260],{},[252,261,262],{},".rten"," or standard ",[183,265,266],{},[252,267,268],{},".onnx",[202,270,271,276,281],{},[220,272,273],{},[183,274,275],{},"Inference Session API",[220,277,278],{},[252,279,280],{},"MnnSession",[220,282,283,288,289,292],{},[183,284,285],{},[252,286,287],{},"EngineSession"," (implements ",[252,290,291],{},"InferenceSession",")",[202,294,295,300,307],{},[220,296,297],{},[183,298,299],{},"Configuration Model",[220,301,302,303,306],{},"Nested ",[252,304,305],{},"preprocessing"," block in static config",[220,308,309,310,314,315],{},"Decoupled ",[183,311,312],{},[252,313,159],{}," & ",[183,316,317],{},[252,318,164],{},[202,320,321,326,336],{},[220,322,323],{},[183,324,325],{},"NPM Package Names",[220,327,328,329,332,333,292],{},"Standalone (",[252,330,331],{},"react-rusto",", ",[252,334,335],{},"rusto-web",[220,337,338,339,344,345,332,348,292],{},"Scoped ",[183,340,341],{},[252,342,343],{},"@rustors\u002F*"," (",[252,346,347],{},"@rustors\u002Freact",[252,349,350],{},"@rustors\u002Fweb",[188,352],{},[191,354,356],{"id":355},"_1-engine-architecture-model-formats","1. Engine Architecture & Model Formats",[358,359,361],"h3",{"id":360},"zero-c-cmake-toolchain","Zero C++ \u002F CMake Toolchain",[179,363,364],{},"In v0.2, RustO relied on Alibaba MNN via C FFI bindings. This required CMake, platform-specific C++ compilers, and complex NDK\u002FXcode toolchain integration.",[179,366,367,368,370,371,374],{},"In v0.3, the default inference engine is 100% pure Rust powered by ",[183,369,239],{},". Compiling RustO only requires standard Cargo (",[252,372,373],{},"cargo build","), with zero native shared libraries or build-time dependencies.",[358,376,378],{"id":377},"transitioning-model-formats","Transitioning Model Formats",[179,380,250,381,383,384,386,387,389],{},[252,382,254],{}," models are deprecated. Update your model references to ",[252,385,262],{}," (FlatBuffers) or ",[252,388,268],{},":",[391,392,397],"pre",{"className":393,"code":394,"language":395,"meta":396,"style":396},"language-diff shiki shiki-themes material-theme-lighter github-light github-dark monokai","- det_model: \"models\u002Fdet.mnn\"\n- rec_model: \"models\u002Frec.mnn\"\n+ det_model: \"models\u002Fdet.rten\"\n+ rec_model: \"models\u002Frec.rten\"\n","diff","",[252,398,399,412,420,431],{"__ignoreMap":396},[400,401,404,408],"span",{"class":402,"line":403},"line",1,[400,405,407],{"class":406},"sX33R","-",[400,409,411],{"class":410},"sM3cg"," det_model: \"models\u002Fdet.mnn\"\n",[400,413,415,417],{"class":402,"line":414},2,[400,416,407],{"class":406},[400,418,419],{"class":410}," rec_model: \"models\u002Frec.mnn\"\n",[400,421,423,427],{"class":402,"line":422},3,[400,424,426],{"class":425},"sl_ps","+",[400,428,430],{"class":429},"sktkw"," det_model: \"models\u002Fdet.rten\"\n",[400,432,434,436],{"class":402,"line":433},4,[400,435,426],{"class":425},[400,437,438],{"class":429}," rec_model: \"models\u002Frec.rten\"\n",[179,440,441,442,444,445,447,448,332,453,458,459,464],{},"Pre-converted ",[252,443,262],{}," and ",[252,446,268],{}," models are available on ",[234,449,452],{"href":450,"rel":451},"https:\u002F\u002Fgithub.com\u002Fbyrizki\u002Frusto-rs\u002Freleases",[238],"GitHub Releases",[234,454,457],{"href":455,"rel":456},"https:\u002F\u002Fwww.npmjs.com\u002Fsearch?q=%40rustors%2Fmodel-ppocrv6",[238],"npm",", and ",[234,460,463],{"href":461,"rel":462},"https:\u002F\u002Fwww.nuget.org\u002Fpackages?q=RustODotnet.Models.PPOCRv6",[238],"NuGet",".",[188,466],{},[191,468,470,471],{"id":469},"_2-session-api-enginesession","2. Session API: ",[252,472,287],{},[179,474,475,476,478,479,481,482,484],{},"The concrete ",[252,477,280],{}," struct has been removed in favor of ",[252,480,287],{},", which implements the generic ",[252,483,291],{}," trait.",[358,486,488],{"id":487},"before-v02","Before (v0.2)",[391,490,494],{"className":491,"code":492,"language":493,"meta":396,"style":396},"language-rust shiki shiki-themes material-theme-lighter github-light github-dark monokai","use rusto::session::MnnSession;\n\nlet det_session = MnnSession::from_file(\"models\u002Fdet.mnn\")?;\n","rust",[252,495,496,521,527],{"__ignoreMap":396},[400,497,498,502,506,510,513,515,517],{"class":402,"line":403},[400,499,501],{"class":500},"shWJe","use",[400,503,505],{"class":504},"sKvfc"," rusto",[400,507,509],{"class":508},"sGXK2","::",[400,511,512],{"class":504},"session",[400,514,509],{"class":508},[400,516,280],{"class":504},[400,518,520],{"class":519},"swvn1",";\n",[400,522,523],{"class":402,"line":414},[400,524,526],{"emptyLinePlaceholder":525},true,"\n",[400,528,529,533,537,540,543,545,549,552,556,560,562,564,567],{"class":402,"line":422},[400,530,532],{"class":531},"srJo8","let",[400,534,536],{"class":535},"ss--_"," det_session ",[400,538,539],{"class":508},"=",[400,541,542],{"class":504}," MnnSession",[400,544,509],{"class":508},[400,546,548],{"class":547},"sD0ED","from_file",[400,550,551],{"class":519},"(",[400,553,555],{"class":554},"siCPE","\"",[400,557,559],{"class":558},"sLACW","models\u002Fdet.mnn",[400,561,555],{"class":554},[400,563,292],{"class":519},[400,565,566],{"class":508},"?",[400,568,520],{"class":519},[358,570,572],{"id":571},"after-v03","After (v0.3)",[391,574,576],{"className":491,"code":575,"language":493,"meta":396,"style":396},"use rusto::session::EngineSession;\n\n\u002F\u002F Using built-in RTen backend:\nlet det_session = EngineSession::from_det_config(&config.det)?;\nlet rec_session = EngineSession::from_rec_config(&config.rec)?;\n\n\u002F\u002F Or wrap custom third-party engines (e.g. ONNX Runtime ort, Tract):\nlet custom_session = EngineSession::from_custom(my_session_box);\nlet ocr = RustO::with_custom_engines(config, det_session, rec_session)?;\n",[252,577,578,594,598,604,639,673,678,684,709],{"__ignoreMap":396},[400,579,580,582,584,586,588,590,592],{"class":402,"line":403},[400,581,501],{"class":500},[400,583,505],{"class":504},[400,585,509],{"class":508},[400,587,512],{"class":504},[400,589,509],{"class":508},[400,591,287],{"class":504},[400,593,520],{"class":519},[400,595,596],{"class":402,"line":414},[400,597,526],{"emptyLinePlaceholder":525},[400,599,600],{"class":402,"line":422},[400,601,603],{"class":602},"ss7Ak","\u002F\u002F Using built-in RTen backend:\n",[400,605,606,608,610,612,615,617,620,622,625,628,630,633,635,637],{"class":402,"line":433},[400,607,532],{"class":531},[400,609,536],{"class":535},[400,611,539],{"class":508},[400,613,614],{"class":504}," EngineSession",[400,616,509],{"class":508},[400,618,619],{"class":547},"from_det_config",[400,621,551],{"class":519},[400,623,624],{"class":508},"&",[400,626,627],{"class":535},"config",[400,629,464],{"class":508},[400,631,632],{"class":535},"det",[400,634,292],{"class":519},[400,636,566],{"class":508},[400,638,520],{"class":519},[400,640,642,644,647,649,651,653,656,658,660,662,664,667,669,671],{"class":402,"line":641},5,[400,643,532],{"class":531},[400,645,646],{"class":535}," rec_session ",[400,648,539],{"class":508},[400,650,614],{"class":504},[400,652,509],{"class":508},[400,654,655],{"class":547},"from_rec_config",[400,657,551],{"class":519},[400,659,624],{"class":508},[400,661,627],{"class":535},[400,663,464],{"class":508},[400,665,666],{"class":535},"rec",[400,668,292],{"class":519},[400,670,566],{"class":508},[400,672,520],{"class":519},[400,674,676],{"class":402,"line":675},6,[400,677,526],{"emptyLinePlaceholder":525},[400,679,681],{"class":402,"line":680},7,[400,682,683],{"class":602},"\u002F\u002F Or wrap custom third-party engines (e.g. ONNX Runtime ort, Tract):\n",[400,685,687,689,692,694,696,698,701,703,706],{"class":402,"line":686},8,[400,688,532],{"class":531},[400,690,691],{"class":535}," custom_session ",[400,693,539],{"class":508},[400,695,614],{"class":504},[400,697,509],{"class":508},[400,699,700],{"class":547},"from_custom",[400,702,551],{"class":519},[400,704,705],{"class":535},"my_session_box",[400,707,708],{"class":519},");\n",[400,710,712,714,717,719,722,724,727,729,731,734,737,739,742,744,746],{"class":402,"line":711},9,[400,713,532],{"class":531},[400,715,716],{"class":535}," ocr ",[400,718,539],{"class":508},[400,720,721],{"class":504}," RustO",[400,723,509],{"class":508},[400,725,726],{"class":547},"with_custom_engines",[400,728,551],{"class":519},[400,730,627],{"class":535},[400,732,733],{"class":519},",",[400,735,736],{"class":535}," det_session",[400,738,733],{"class":519},[400,740,741],{"class":535}," rec_session",[400,743,292],{"class":519},[400,745,566],{"class":508},[400,747,520],{"class":519},[188,749],{},[191,751,753],{"id":752},"_3-configuration-runtime-options-refactoring","3. Configuration & Runtime Options Refactoring",[179,755,756],{},"In v0.2, image preprocessing thresholds and post-processing flags were coupled inside static configuration structures. In v0.3, options are decoupled into two distinct categories:",[758,759,760,768],"ol",{},[761,762,763,767],"li",{},[183,764,765],{},[252,766,159],{},": One-time static setup for model paths, vocabulary dictionary, and thread allocation.",[761,769,770,774,775,778,779,464],{},[183,771,772],{},[252,773,164],{},": Per-request options passed into ",[252,776,777],{},"detect_text(...)"," or ",[252,780,781],{},"run_ocr(...)",[358,783,785],{"id":784},"flattened-options-structure","Flattened Options Structure",[179,787,788,789,791,792,389],{},"The legacy nested ",[252,790,305],{}," block has been removed. Detection thresholds and post-processing limits are now direct sibling fields on ",[252,793,164],{},[795,796,488],"h4",{"id":797},"before-v02-1",[391,799,801],{"className":491,"code":800,"language":493,"meta":396,"style":396},"\u002F\u002F v0.2: Runtime thresholds mutated static engine configuration\nlet mut config = Config::from_files(\"det.mnn\", \"rec.mnn\", \"dict.txt\")?;\nconfig.preprocessing.det_db_thresh = 0.3;\nconfig.preprocessing.det_db_box_thresh = 0.6;\nconfig.preprocessing.det_db_unclip_ratio = 1.6;\n\nlet mut ocr = RustO::new(config)?;\nlet result = ocr.run(&image)?;\n",[252,802,803,808,863,890,914,938,942,969],{"__ignoreMap":396},[400,804,805],{"class":402,"line":403},[400,806,807],{"class":602},"\u002F\u002F v0.2: Runtime thresholds mutated static engine configuration\n",[400,809,810,812,816,819,821,824,826,829,831,833,836,838,840,843,846,848,850,852,855,857,859,861],{"class":402,"line":414},[400,811,532],{"class":531},[400,813,815],{"class":814},"sTNss"," mut",[400,817,818],{"class":535}," config ",[400,820,539],{"class":508},[400,822,823],{"class":504}," Config",[400,825,509],{"class":508},[400,827,828],{"class":547},"from_files",[400,830,551],{"class":519},[400,832,555],{"class":554},[400,834,835],{"class":558},"det.mnn",[400,837,555],{"class":554},[400,839,733],{"class":519},[400,841,842],{"class":554}," \"",[400,844,845],{"class":558},"rec.mnn",[400,847,555],{"class":554},[400,849,733],{"class":519},[400,851,842],{"class":554},[400,853,854],{"class":558},"dict.txt",[400,856,555],{"class":554},[400,858,292],{"class":519},[400,860,566],{"class":508},[400,862,520],{"class":519},[400,864,865,867,869,871,873,876,878,882,885,888],{"class":402,"line":422},[400,866,627],{"class":535},[400,868,464],{"class":508},[400,870,305],{"class":535},[400,872,464],{"class":508},[400,874,875],{"class":535},"det_db_thresh ",[400,877,539],{"class":508},[400,879,881],{"class":880},"sYThS"," 0",[400,883,464],{"class":884},"sMTiH",[400,886,887],{"class":880},"3",[400,889,520],{"class":519},[400,891,892,894,896,898,900,903,905,907,909,912],{"class":402,"line":433},[400,893,627],{"class":535},[400,895,464],{"class":508},[400,897,305],{"class":535},[400,899,464],{"class":508},[400,901,902],{"class":535},"det_db_box_thresh ",[400,904,539],{"class":508},[400,906,881],{"class":880},[400,908,464],{"class":884},[400,910,911],{"class":880},"6",[400,913,520],{"class":519},[400,915,916,918,920,922,924,927,929,932,934,936],{"class":402,"line":641},[400,917,627],{"class":535},[400,919,464],{"class":508},[400,921,305],{"class":535},[400,923,464],{"class":508},[400,925,926],{"class":535},"det_db_unclip_ratio ",[400,928,539],{"class":508},[400,930,931],{"class":880}," 1",[400,933,464],{"class":884},[400,935,911],{"class":880},[400,937,520],{"class":519},[400,939,940],{"class":402,"line":675},[400,941,526],{"emptyLinePlaceholder":525},[400,943,944,946,948,950,952,954,956,959,961,963,965,967],{"class":402,"line":680},[400,945,532],{"class":531},[400,947,815],{"class":814},[400,949,716],{"class":535},[400,951,539],{"class":508},[400,953,721],{"class":504},[400,955,509],{"class":508},[400,957,958],{"class":547},"new",[400,960,551],{"class":519},[400,962,627],{"class":535},[400,964,292],{"class":519},[400,966,566],{"class":508},[400,968,520],{"class":519},[400,970,971,973,976,978,981,983,986,988,990,993,995,997],{"class":402,"line":686},[400,972,532],{"class":531},[400,974,975],{"class":535}," result ",[400,977,539],{"class":508},[400,979,980],{"class":535}," ocr",[400,982,464],{"class":508},[400,984,985],{"class":547},"run",[400,987,551],{"class":519},[400,989,624],{"class":508},[400,991,992],{"class":535},"image",[400,994,292],{"class":519},[400,996,566],{"class":508},[400,998,520],{"class":519},[795,1000,572],{"id":1001},"after-v03-1",[391,1003,1005],{"className":491,"code":1004,"language":493,"meta":396,"style":396},"use rusto::{InitializeConfig, OcrRunOptions, OutputGranularity, RustO};\n\n\u002F\u002F 1. Static initialization (thread-safe, load once)\nlet mut ocr = RustO::initialize(InitializeConfig::ppv6(\n    \"models\u002Fdet.rten\",\n    \"models\u002Frec.rten\",\n    \"models\u002Fdict.txt\",\n))?;\n\n\u002F\u002F 2. Per-request options (stateless, concurrent)\nlet mut options = OcrRunOptions::default();\noptions.detection.box_threshold = 0.6;\noptions.postprocess.unclip_ratio = 1.6;\noptions.output_granularity = OutputGranularity::Lines;\n\n\u002F\u002F Optional: Document calibration & resolution scaling\noptions.calibration.descreen = true;\noptions.optimization.max_side_len = 960;\n\nlet result = ocr.detect_text(&image, &options)?;\n",[252,1006,1007,1037,1041,1046,1075,1088,1099,1110,1119,1123,1129,1151,1177,1202,1223,1228,1234,1256,1278,1283],{"__ignoreMap":396},[400,1008,1009,1011,1013,1015,1018,1020,1022,1025,1027,1030,1032,1034],{"class":402,"line":403},[400,1010,501],{"class":500},[400,1012,505],{"class":504},[400,1014,509],{"class":508},[400,1016,1017],{"class":519},"{",[400,1019,159],{"class":504},[400,1021,733],{"class":519},[400,1023,1024],{"class":504}," OcrRunOptions",[400,1026,733],{"class":519},[400,1028,1029],{"class":504}," OutputGranularity",[400,1031,733],{"class":519},[400,1033,721],{"class":504},[400,1035,1036],{"class":519},"};\n",[400,1038,1039],{"class":402,"line":414},[400,1040,526],{"emptyLinePlaceholder":525},[400,1042,1043],{"class":402,"line":422},[400,1044,1045],{"class":602},"\u002F\u002F 1. Static initialization (thread-safe, load once)\n",[400,1047,1048,1050,1052,1054,1056,1058,1060,1063,1065,1067,1069,1072],{"class":402,"line":433},[400,1049,532],{"class":531},[400,1051,815],{"class":814},[400,1053,716],{"class":535},[400,1055,539],{"class":508},[400,1057,721],{"class":504},[400,1059,509],{"class":508},[400,1061,1062],{"class":547},"initialize",[400,1064,551],{"class":519},[400,1066,159],{"class":504},[400,1068,509],{"class":508},[400,1070,1071],{"class":547},"ppv6",[400,1073,1074],{"class":519},"(\n",[400,1076,1077,1080,1083,1085],{"class":402,"line":641},[400,1078,1079],{"class":554},"    \"",[400,1081,1082],{"class":558},"models\u002Fdet.rten",[400,1084,555],{"class":554},[400,1086,1087],{"class":519},",\n",[400,1089,1090,1092,1095,1097],{"class":402,"line":675},[400,1091,1079],{"class":554},[400,1093,1094],{"class":558},"models\u002Frec.rten",[400,1096,555],{"class":554},[400,1098,1087],{"class":519},[400,1100,1101,1103,1106,1108],{"class":402,"line":680},[400,1102,1079],{"class":554},[400,1104,1105],{"class":558},"models\u002Fdict.txt",[400,1107,555],{"class":554},[400,1109,1087],{"class":519},[400,1111,1112,1115,1117],{"class":402,"line":686},[400,1113,1114],{"class":519},"))",[400,1116,566],{"class":508},[400,1118,520],{"class":519},[400,1120,1121],{"class":402,"line":711},[400,1122,526],{"emptyLinePlaceholder":525},[400,1124,1126],{"class":402,"line":1125},10,[400,1127,1128],{"class":602},"\u002F\u002F 2. Per-request options (stateless, concurrent)\n",[400,1130,1132,1134,1136,1139,1141,1143,1145,1148],{"class":402,"line":1131},11,[400,1133,532],{"class":531},[400,1135,815],{"class":814},[400,1137,1138],{"class":535}," options ",[400,1140,539],{"class":508},[400,1142,1024],{"class":504},[400,1144,509],{"class":508},[400,1146,1147],{"class":547},"default",[400,1149,1150],{"class":519},"();\n",[400,1152,1154,1157,1159,1162,1164,1167,1169,1171,1173,1175],{"class":402,"line":1153},12,[400,1155,1156],{"class":535},"options",[400,1158,464],{"class":508},[400,1160,1161],{"class":535},"detection",[400,1163,464],{"class":508},[400,1165,1166],{"class":535},"box_threshold ",[400,1168,539],{"class":508},[400,1170,881],{"class":880},[400,1172,464],{"class":884},[400,1174,911],{"class":880},[400,1176,520],{"class":519},[400,1178,1180,1182,1184,1187,1189,1192,1194,1196,1198,1200],{"class":402,"line":1179},13,[400,1181,1156],{"class":535},[400,1183,464],{"class":508},[400,1185,1186],{"class":535},"postprocess",[400,1188,464],{"class":508},[400,1190,1191],{"class":535},"unclip_ratio ",[400,1193,539],{"class":508},[400,1195,931],{"class":880},[400,1197,464],{"class":884},[400,1199,911],{"class":880},[400,1201,520],{"class":519},[400,1203,1205,1207,1209,1212,1214,1216,1218,1221],{"class":402,"line":1204},14,[400,1206,1156],{"class":535},[400,1208,464],{"class":508},[400,1210,1211],{"class":535},"output_granularity ",[400,1213,539],{"class":508},[400,1215,1029],{"class":504},[400,1217,509],{"class":508},[400,1219,1220],{"class":504},"Lines",[400,1222,520],{"class":519},[400,1224,1226],{"class":402,"line":1225},15,[400,1227,526],{"emptyLinePlaceholder":525},[400,1229,1231],{"class":402,"line":1230},16,[400,1232,1233],{"class":602},"\u002F\u002F Optional: Document calibration & resolution scaling\n",[400,1235,1237,1239,1241,1244,1246,1249,1251,1254],{"class":402,"line":1236},17,[400,1238,1156],{"class":535},[400,1240,464],{"class":508},[400,1242,1243],{"class":535},"calibration",[400,1245,464],{"class":508},[400,1247,1248],{"class":535},"descreen ",[400,1250,539],{"class":508},[400,1252,1253],{"class":884}," true",[400,1255,520],{"class":519},[400,1257,1259,1261,1263,1266,1268,1271,1273,1276],{"class":402,"line":1258},18,[400,1260,1156],{"class":535},[400,1262,464],{"class":508},[400,1264,1265],{"class":535},"optimization",[400,1267,464],{"class":508},[400,1269,1270],{"class":535},"max_side_len ",[400,1272,539],{"class":508},[400,1274,1275],{"class":880}," 960",[400,1277,520],{"class":519},[400,1279,1281],{"class":402,"line":1280},19,[400,1282,526],{"emptyLinePlaceholder":525},[400,1284,1286,1288,1290,1292,1294,1296,1299,1301,1303,1305,1307,1310,1312,1314,1316],{"class":402,"line":1285},20,[400,1287,532],{"class":531},[400,1289,975],{"class":535},[400,1291,539],{"class":508},[400,1293,980],{"class":535},[400,1295,464],{"class":508},[400,1297,1298],{"class":547},"detect_text",[400,1300,551],{"class":519},[400,1302,624],{"class":508},[400,1304,992],{"class":535},[400,1306,733],{"class":519},[400,1308,1309],{"class":508}," &",[400,1311,1156],{"class":535},[400,1313,292],{"class":519},[400,1315,566],{"class":508},[400,1317,520],{"class":519},[188,1319],{},[191,1321,1323,1324,292],{"id":1322},"_4-package-namespaces-migration-rustors","4. Package Namespaces Migration (",[252,1325,343],{},[179,1327,1328,1329,1332],{},"All npm packages have migrated to the official ",[252,1330,1331],{},"@rustors"," organization scope:",[196,1334,1335,1348],{},[199,1336,1337],{},[202,1338,1339,1342,1345],{},[205,1340,1341],{},"Legacy Package (v0.2)",[205,1343,1344],{},"Official Package (v0.3)",[205,1346,1347],{},"Notes",[215,1349,1350,1369,1386,1403],{},[202,1351,1352,1357,1366],{},[220,1353,1354],{},[252,1355,1356],{},"react-native-rusto",[220,1358,1359],{},[234,1360,1363],{"href":1361,"rel":1362},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@rustors\u002Freact-native",[238],[252,1364,1365],{},"@rustors\u002Freact-native",[220,1367,1368],{},"Native JNI\u002FTurboModule bridge",[202,1370,1371,1375,1383],{},[220,1372,1373],{},[252,1374,335],{},[220,1376,1377],{},[234,1378,1381],{"href":1379,"rel":1380},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@rustors\u002Fweb",[238],[252,1382,350],{},[220,1384,1385],{},"Browser WASM RTen engine",[202,1387,1388,1392,1400],{},[220,1389,1390],{},[252,1391,331],{},[220,1393,1394],{},[234,1395,1398],{"href":1396,"rel":1397},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@rustors\u002Freact",[238],[252,1399,347],{},[220,1401,1402],{},"React hooks & context provider",[202,1404,1405,1410,1415],{},[220,1406,1407],{},[252,1408,1409],{},"rusto-models-ppocrv6-*",[220,1411,1412],{},[252,1413,1414],{},"@rustors\u002Fmodel-ppocrv6-*",[220,1416,1417,1418,1420],{},"Prepackaged ",[252,1419,262],{}," model bundles",[358,1422,1424,1425],{"id":1423},"updating-packagejson","Updating ",[252,1426,1427],{},"package.json",[391,1429,1431],{"className":393,"code":1430,"language":395,"meta":396,"style":396},"  \"dependencies\": {\n-   \"react-native-rusto\": \"^0.2.4\",\n-   \"rusto-models-ppocrv6-tiny\": \"^0.2.4\"\n+   \"@rustors\u002Freact-native\": \"^0.3.0\",\n+   \"@rustors\u002Fmodel-ppocrv6-tiny\": \"^0.3.0\"\n  }\n",[252,1432,1433,1438,1445,1452,1459,1466],{"__ignoreMap":396},[400,1434,1435],{"class":402,"line":403},[400,1436,1437],{"class":535},"  \"dependencies\": {\n",[400,1439,1440,1442],{"class":402,"line":414},[400,1441,407],{"class":406},[400,1443,1444],{"class":410},"   \"react-native-rusto\": \"^0.2.4\",\n",[400,1446,1447,1449],{"class":402,"line":422},[400,1448,407],{"class":406},[400,1450,1451],{"class":410},"   \"rusto-models-ppocrv6-tiny\": \"^0.2.4\"\n",[400,1453,1454,1456],{"class":402,"line":433},[400,1455,426],{"class":425},[400,1457,1458],{"class":429},"   \"@rustors\u002Freact-native\": \"^0.3.0\",\n",[400,1460,1461,1463],{"class":402,"line":641},[400,1462,426],{"class":425},[400,1464,1465],{"class":429},"   \"@rustors\u002Fmodel-ppocrv6-tiny\": \"^0.3.0\"\n",[400,1467,1468],{"class":402,"line":675},[400,1469,1470],{"class":535},"  }\n",[188,1472],{},[191,1474,1476],{"id":1475},"_5-mobile-native-packages","5. Mobile & Native Packages",[1478,1479,1480,1523,1581],"ul",{},[761,1481,1482,1485,1486],{},[183,1483,1484],{},"Android (JitPack \u002F Gradle)",":\n",[391,1487,1491],{"className":1488,"code":1489,"language":1490,"meta":396,"style":396},"language-groovy shiki shiki-themes material-theme-lighter github-light github-dark monokai","\u002F\u002F app\u002Fbuild.gradle\nimplementation 'com.github.byrizki.rusto-rs:rusto-android:0.3.0'\nimplementation 'com.github.byrizki.rusto-rs:rusto-models-ppocrv6-tiny:0.3.0'\n","groovy",[252,1492,1493,1498,1512],{"__ignoreMap":396},[400,1494,1495],{"class":402,"line":403},[400,1496,1497],{"class":602},"\u002F\u002F app\u002Fbuild.gradle\n",[400,1499,1500,1503,1506,1509],{"class":402,"line":414},[400,1501,1502],{"class":535},"implementation ",[400,1504,1505],{"class":554},"'",[400,1507,1508],{"class":558},"com.github.byrizki.rusto-rs:rusto-android:0.3.0",[400,1510,1511],{"class":554},"'\n",[400,1513,1514,1516,1518,1521],{"class":402,"line":422},[400,1515,1502],{"class":535},[400,1517,1505],{"class":554},[400,1519,1520],{"class":558},"com.github.byrizki.rusto-rs:rusto-models-ppocrv6-tiny:0.3.0",[400,1522,1511],{"class":554},[761,1524,1525,1485,1528],{},[183,1526,1527],{},"iOS (CocoaPods)",[391,1529,1533],{"className":1530,"code":1531,"language":1532,"meta":396,"style":396},"language-ruby shiki shiki-themes material-theme-lighter github-light github-dark monokai","# Podfile\npod 'RustO', '~> 0.3.0'\npod 'RustO-Models-PPOCRv6-Tiny', '~> 0.3.0'\n","ruby",[252,1534,1535,1540,1562],{"__ignoreMap":396},[400,1536,1537],{"class":402,"line":403},[400,1538,1539],{"class":602},"# Podfile\n",[400,1541,1542,1545,1547,1550,1552,1554,1557,1560],{"class":402,"line":414},[400,1543,1544],{"class":535},"pod ",[400,1546,1505],{"class":554},[400,1548,1549],{"class":558},"RustO",[400,1551,1505],{"class":554},[400,1553,733],{"class":519},[400,1555,1556],{"class":554}," '",[400,1558,1559],{"class":558},"~> 0.3.0",[400,1561,1511],{"class":554},[400,1563,1564,1566,1568,1571,1573,1575,1577,1579],{"class":402,"line":422},[400,1565,1544],{"class":535},[400,1567,1505],{"class":554},[400,1569,1570],{"class":558},"RustO-Models-PPOCRv6-Tiny",[400,1572,1505],{"class":554},[400,1574,733],{"class":519},[400,1576,1556],{"class":554},[400,1578,1559],{"class":558},[400,1580,1511],{"class":554},[761,1582,1583,1485,1586],{},[183,1584,1585],{},".NET (NuGet)",[391,1587,1591],{"className":1588,"code":1589,"language":1590,"meta":396,"style":396},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark monokai","dotnet add package RustODotnet --version 0.3.0\ndotnet add package RustODotnet.Models.PPOCRv6.Tiny --version 0.3.0\n","bash",[252,1592,1593,1615],{"__ignoreMap":396},[400,1594,1595,1599,1602,1605,1608,1612],{"class":402,"line":403},[400,1596,1598],{"class":1597},"sR7ES","dotnet",[400,1600,1601],{"class":558}," add",[400,1603,1604],{"class":558}," package",[400,1606,1607],{"class":558}," RustODotnet",[400,1609,1611],{"class":1610},"sFhLe"," --version",[400,1613,1614],{"class":880}," 0.3.0\n",[400,1616,1617,1619,1621,1623,1626,1628],{"class":402,"line":414},[400,1618,1598],{"class":1597},[400,1620,1601],{"class":558},[400,1622,1604],{"class":558},[400,1624,1625],{"class":558}," RustODotnet.Models.PPOCRv6.Tiny",[400,1627,1611],{"class":1610},[400,1629,1614],{"class":880},[188,1631],{},[191,1633,1635],{"id":1634},"_6-migration-checklist","6. Migration Checklist",[1478,1637,1640,1661,1677,1691,1705,1725],{"className":1638},[1639],"contains-task-list",[761,1641,1644,1648,1649,1652,1653,1655,1656,778,1658,1660],{"className":1642},[1643],"task-list-item",[1645,1646],"input",{"disabled":525,"type":1647},"checkbox"," ",[183,1650,1651],{},"Step 1",": Replace model files (",[252,1654,254],{},") with ",[252,1657,262],{},[252,1659,268],{}," models.",[761,1662,1664,1648,1666,1669,1670,1673,1674,1676],{"className":1663},[1643],[1645,1665],{"disabled":525,"type":1647},[183,1667,1668],{},"Step 2",": Update dependencies to ",[252,1671,1672],{},"0.3.0"," (using ",[252,1675,343],{}," for npm).",[761,1678,1680,1648,1682,1685,1686,1688,1689,464],{"className":1679},[1643],[1645,1681],{"disabled":525,"type":1647},[183,1683,1684],{},"Step 3",": Replace ",[252,1687,280],{}," references with ",[252,1690,287],{},[761,1692,1694,1648,1696,1699,1700,1702,1703,464],{"className":1693},[1643],[1645,1695],{"disabled":525,"type":1647},[183,1697,1698],{},"Step 4",": Separate static ",[252,1701,159],{}," from per-image ",[252,1704,164],{},[761,1706,1708,1648,1710,1713,1714,1717,1718,444,1721,1724],{"className":1707},[1643],[1645,1709],{"disabled":525,"type":1647},[183,1711,1712],{},"Step 5",": Flatten configuration fields (replace nested ",[252,1715,1716],{},"preprocessing.*"," with ",[252,1719,1720],{},"options.detection.*",[252,1722,1723],{},"options.postprocess.*",").",[761,1726,1728,1648,1730,1733],{"className":1727},[1643],[1645,1729],{"disabled":525,"type":1647},[183,1731,1732],{},"Step 6",": Validate OCR output and bounding boxes on test images.",[1735,1736,1737],"style",{},"html pre.shiki code .shWJe, html code.shiki .shWJe{--shiki-light:#F76D47;--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672}html pre.shiki code .sKvfc, html code.shiki .sKvfc{--shiki-light:#E2931D;--shiki-light-text-decoration:inherit;--shiki-default:#6F42C1;--shiki-default-text-decoration:inherit;--shiki-dark:#B392F0;--shiki-dark-text-decoration:inherit;--shiki-sepia:#A6E22E;--shiki-sepia-text-decoration:underline}html pre.shiki code .sGXK2, html code.shiki .sGXK2{--shiki-light:#39ADB5;--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672}html pre.shiki code .swvn1, html code.shiki .swvn1{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .srJo8, html code.shiki .srJo8{--shiki-light:#9C3EDA;--shiki-light-font-style:inherit;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .ss--_, html code.shiki .ss--_{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .sD0ED, html code.shiki .sD0ED{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}html pre.shiki code .siCPE, html code.shiki .siCPE{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#E6DB74}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);}html pre.shiki code .ss7Ak, html code.shiki .ss7Ak{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#6A737D;--shiki-default-font-style:inherit;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit;--shiki-sepia:#88846F;--shiki-sepia-font-style:inherit}html pre.shiki code .sTNss, html code.shiki .sTNss{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672}html pre.shiki code .sYThS, html code.shiki .sYThS{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}html pre.shiki code .sMTiH, html code.shiki .sMTiH{--shiki-light:#39ADB5;--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}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 .sFhLe, html code.shiki .sFhLe{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}html pre.shiki code .sX33R, html code.shiki .sX33R{--shiki-light:#39ADB5;--shiki-default:#B31D28;--shiki-dark:#FDAEB7;--shiki-sepia:#F92672}html pre.shiki code .sM3cg, html code.shiki .sM3cg{--shiki-light:#E53935;--shiki-default:#B31D28;--shiki-dark:#FDAEB7;--shiki-sepia:#F92672}html pre.shiki code .sl_ps, html code.shiki .sl_ps{--shiki-light:#39ADB5;--shiki-default:#22863A;--shiki-dark:#85E89D;--shiki-sepia:#A6E22E}html pre.shiki code .sktkw, html code.shiki .sktkw{--shiki-light:#91B859;--shiki-default:#22863A;--shiki-dark:#85E89D;--shiki-sepia:#A6E22E}",{"title":396,"searchDepth":414,"depth":414,"links":1739},[1740,1741,1745,1750,1753,1758,1759],{"id":193,"depth":414,"text":194},{"id":355,"depth":414,"text":356,"children":1742},[1743,1744],{"id":360,"depth":422,"text":361},{"id":377,"depth":422,"text":378},{"id":469,"depth":414,"text":1746,"children":1747},"2. Session API: EngineSession",[1748,1749],{"id":487,"depth":422,"text":488},{"id":571,"depth":422,"text":572},{"id":752,"depth":414,"text":753,"children":1751},[1752],{"id":784,"depth":422,"text":785},{"id":1322,"depth":414,"text":1754,"children":1755},"4. Package Namespaces Migration (@rustors\u002F*)",[1756],{"id":1423,"depth":422,"text":1757},"Updating package.json",{"id":1475,"depth":414,"text":1476},{"id":1634,"depth":414,"text":1635},"Upgrading from RustO v0.2 to v0.3: Pure Rust RTen engine, .rten model formats, EngineSession, decoupled run options, and @rustors namespace.","md",null,{},{"icon":138},{"title":1766,"description":1760},"Migration Guide (v0.2 to v0.3) - RustO!","HkcqlluC5CYKQQAWI3gHUn5M-JAYkXTNrleFy0JKsSQ",[1769,1771],{"title":145,"path":146,"stem":147,"description":1770,"icon":148,"children":-1},"Resolving common issues, model asset resolution, platform-specific linking errors, and performance bottlenecks.",{"title":159,"path":160,"stem":161,"description":1772,"icon":162,"children":-1},"Public initialization API reference for model presets, model paths, and auxiliary stages.",1792905889744]