[{"data":1,"prerenderedAt":778},["ShallowReactive",2],{"navigation_docs_en":3,"-en-advance-guide-performance-and-benchmarks":173,"-en-advance-guide-performance-and-benchmarks-surround":773},[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":140,"body":175,"description":765,"extension":766,"links":767,"meta":768,"navigation":769,"path":141,"seo":770,"stem":142,"__hash__":772},"docs_en\u002Fen\u002F03.advance-guide\u002F06.performance-and-benchmarks.md",{"type":176,"value":177,"toc":756},"minimark",[178,182,187,195,379,382,386,499,501,505,510,513,517,527,654,658,661,752],[179,180,181],"p",{},"RustO! is engineered from the ground up for low-latency, memory-efficient OCR on both server clusters and edge mobile devices.",[183,184,186],"h2",{"id":185},"cross-hardware-benchmark-matrix","📊 Cross-Hardware Benchmark Matrix",[179,188,189,190,194],{},"Measured on standard A4 invoice scans (150 DPI, ~1200×1700 px, ~25 text blocks) using ",[191,192,193],"strong",{},"PP-OCRv6 Tiny",":",[196,197,198,220],"table",{},[199,200,201],"thead",{},[202,203,204,208,211,214,217],"tr",{},[205,206,207],"th",{},"Hardware Platform",[205,209,210],{},"Detection Latency",[205,212,213],{},"Recognition Latency (Batch 6)",[205,215,216],{},"Total Latency",[205,218,219],{},"Peak Memory (RAM)",[221,222,223,251,277,302,328,353],"tbody",{},[202,224,225,232,237,242,248],{},[226,227,228,231],"td",{},[191,229,230],{},"AMD Ryzen 9 7950X"," (16-Core)",[226,233,234],{},[191,235,236],{},"~32 ms",[226,238,239],{},[191,240,241],{},"~48 ms",[226,243,244,245],{},"⚡ ",[191,246,247],{},"~80 ms",[226,249,250],{},"~85 MB",[202,252,253,259,264,269,274],{},[226,254,255,258],{},[191,256,257],{},"Apple M3 Max"," (macOS)",[226,260,261],{},[191,262,263],{},"~28 ms",[226,265,266],{},[191,267,268],{},"~42 ms",[226,270,244,271],{},[191,272,273],{},"~70 ms",[226,275,276],{},"~92 MB",[202,278,279,284,289,294,299],{},[226,280,281],{},[191,282,283],{},"Intel Core i7-13700K",[226,285,286],{},[191,287,288],{},"~35 ms",[226,290,291],{},[191,292,293],{},"~52 ms",[226,295,244,296],{},[191,297,298],{},"~87 ms",[226,300,301],{},"~88 MB",[202,303,304,310,315,320,325],{},[226,305,306,309],{},[191,307,308],{},"Apple iPhone 15 Pro"," (A17 Pro)",[226,311,312],{},[191,313,314],{},"~45 ms",[226,316,317],{},[191,318,319],{},"~65 ms",[226,321,244,322],{},[191,323,324],{},"~110 ms",[226,326,327],{},"~65 MB",[202,329,330,336,340,345,350],{},[226,331,332,335],{},[191,333,334],{},"Snapdragon 8 Gen 3"," (Android)",[226,337,338],{},[191,339,293],{},[226,341,342],{},[191,343,344],{},"~78 ms",[226,346,244,347],{},[191,348,349],{},"~130 ms",[226,351,352],{},"~72 MB",[202,354,355,361,366,371,376],{},[226,356,357,360],{},[191,358,359],{},"Raspberry Pi 5"," (Broadcom 2.4GHz)",[226,362,363],{},[191,364,365],{},"~140 ms",[226,367,368],{},[191,369,370],{},"~210 ms",[226,372,244,373],{},[191,374,375],{},"~350 ms",[226,377,378],{},"~110 MB",[380,381],"hr",{},[183,383,385],{"id":384},"️-comparison-rusto-vs-opencv-onnxruntime-c","🏎️ Comparison: RustO! vs OpenCV + ONNXRuntime C++",[196,387,388,404],{},[199,389,390],{},[202,391,392,395,398,401],{},[205,393,394],{},"Dimension",[205,396,397],{},"RustO! (Pure Rust + RTen)",[205,399,400],{},"OpenCV + ONNX C++ Pipeline",[205,402,403],{},"Advantage",[221,405,406,428,446,467,483],{},[202,407,408,413,419,422],{},[226,409,410],{},[191,411,412],{},"Core Binary Size",[226,414,415,418],{},[191,416,417],{},"~5 MB"," (Self-contained)",[226,420,421],{},"~55 MB+ (libopencv, onnxruntime shared libs)",[226,423,424,425],{},"📦 ",[191,426,427],{},"10x smaller",[202,429,430,435,440,443],{},[226,431,432],{},[191,433,434],{},"Accuracy Parity",[226,436,437],{},[191,438,439],{},"99.3%+",[226,441,442],{},"Baseline (100%)",[226,444,445],{},"🎯 Identical bounding boxes",[202,447,448,453,458,461],{},[226,449,450],{},[191,451,452],{},"Peak Memory Overhead",[226,454,455],{},[191,456,457],{},"~85 MB - 120 MB",[226,459,460],{},"~250 MB - 350 MB",[226,462,463,464],{},"🔒 ",[191,465,466],{},"50%+ lower RAM",[202,468,469,474,477,480],{},[226,470,471],{},[191,472,473],{},"C\u002FC++ Marshaling",[226,475,476],{},"Zero overhead (Pure Rust buffers)",[226,478,479],{},"Continuous Mat-to-Tensor array copying",[226,481,482],{},"⚡ Eliminates IPC copies",[202,484,485,490,493,496],{},[226,486,487],{},[191,488,489],{},"Thread Safety",[226,491,492],{},"Memory safe (Rust borrow checker)",[226,494,495],{},"Manual pointers & thread locks",[226,497,498],{},"🛡️ Data-race free",[380,500],{},[183,502,504],{"id":503},"performance-optimizations-in-rusto","⚡ Performance Optimizations in RustO!",[506,507,509],"h3",{"id":508},"_1-pure-rust-image-preprocessing","1. Pure Rust Image Preprocessing",[179,511,512],{},"Traditional OCR pipelines rely on heavy OpenCV shared libraries for resizing, morphological dilation, and contour tracing. RustO! implements these algorithms directly in pure Rust with SIMD auto-vectorization, eliminating inter-library marshalling and memory allocations.",[506,514,516],{"id":515},"_2-multi-core-rayon-parallelism","2. Multi-Core Rayon Parallelism",[179,518,519,520,194],{},"After DBNet detects bounding polygons, perspective affine cropping, rectification, and batch tensor preparation are distributed across available CPU cores via ",[521,522,526],"a",{"href":523,"rel":524},"https:\u002F\u002Fcrates.io\u002Fcrates\u002Frayon",[525],"nofollow","Rayon",[528,529,534],"pre",{"className":530,"code":531,"language":532,"meta":533,"style":533},"language-rust shiki shiki-themes material-theme-lighter github-light github-dark monokai","\u002F\u002F Internally cropped text candidate boxes are parallelized across threads:\nlet crop_imgs: Vec\u003CMat> = padded_boxes.par_iter().map(|b| {\n    get_rotate_crop_image(&padded, b).unwrap()\n}).collect();\n","rust","",[535,536,537,546,609,640],"code",{"__ignoreMap":533},[538,539,542],"span",{"class":540,"line":541},"line",1,[538,543,545],{"class":544},"ss7Ak","\u002F\u002F Internally cropped text candidate boxes are parallelized across threads:\n",[538,547,549,553,557,560,564,568,571,574,577,580,583,587,590,592,595,598,601,604,606],{"class":540,"line":548},2,[538,550,552],{"class":551},"srJo8","let",[538,554,556],{"class":555},"ss--_"," crop_imgs",[538,558,194],{"class":559},"sGXK2",[538,561,563],{"class":562},"sKvfc"," Vec",[538,565,567],{"class":566},"swvn1","\u003C",[538,569,570],{"class":562},"Mat",[538,572,573],{"class":566},">",[538,575,576],{"class":559}," =",[538,578,579],{"class":555}," padded_boxes",[538,581,582],{"class":559},".",[538,584,586],{"class":585},"sD0ED","par_iter",[538,588,589],{"class":566},"()",[538,591,582],{"class":559},[538,593,594],{"class":585},"map",[538,596,597],{"class":566},"(",[538,599,600],{"class":559},"|",[538,602,603],{"class":555},"b",[538,605,600],{"class":559},[538,607,608],{"class":566}," {\n",[538,610,612,615,617,620,623,626,629,632,634,637],{"class":540,"line":611},3,[538,613,614],{"class":585},"    get_rotate_crop_image",[538,616,597],{"class":566},[538,618,619],{"class":559},"&",[538,621,622],{"class":555},"padded",[538,624,625],{"class":566},",",[538,627,628],{"class":555}," b",[538,630,631],{"class":566},")",[538,633,582],{"class":559},[538,635,636],{"class":585},"unwrap",[538,638,639],{"class":566},"()\n",[538,641,643,646,648,651],{"class":540,"line":642},4,[538,644,645],{"class":566},"})",[538,647,582],{"class":559},[538,649,650],{"class":585},"collect",[538,652,653],{"class":566},"();\n",[506,655,657],{"id":656},"_3-aggressive-release-compiler-profile","3. Aggressive Release Compiler Profile",[179,659,660],{},"The production release profile enables Fat Link-Time Optimization (LTO), single codegen unit compilation, and aggressive dead code elimination:",[528,662,666],{"className":663,"code":664,"language":665,"meta":533,"style":533},"language-toml shiki shiki-themes material-theme-lighter github-light github-dark monokai","[profile.release]\nopt-level = 3\nlto = \"fat\"\ncodegen-units = 1\nstrip = true\npanic = \"abort\"\n","toml",[535,667,668,685,697,715,725,737],{"__ignoreMap":533},[538,669,670,673,677,679,682],{"class":540,"line":541},[538,671,672],{"class":566},"[",[538,674,676],{"class":675},"sQqfL","profile",[538,678,582],{"class":555},[538,680,681],{"class":675},"release",[538,683,684],{"class":566},"]\n",[538,686,687,690,693],{"class":540,"line":548},[538,688,689],{"class":555},"opt-level ",[538,691,692],{"class":566},"=",[538,694,696],{"class":695},"sYThS"," 3\n",[538,698,699,702,704,708,712],{"class":540,"line":611},[538,700,701],{"class":555},"lto ",[538,703,692],{"class":566},[538,705,707],{"class":706},"siCPE"," \"",[538,709,711],{"class":710},"sLACW","fat",[538,713,714],{"class":706},"\"\n",[538,716,717,720,722],{"class":540,"line":642},[538,718,719],{"class":555},"codegen-units ",[538,721,692],{"class":566},[538,723,724],{"class":695}," 1\n",[538,726,728,731,733],{"class":540,"line":727},5,[538,729,730],{"class":555},"strip ",[538,732,692],{"class":566},[538,734,736],{"class":735},"s8HiA"," true\n",[538,738,740,743,745,747,750],{"class":540,"line":739},6,[538,741,742],{"class":555},"panic ",[538,744,692],{"class":566},[538,746,707],{"class":706},[538,748,749],{"class":710},"abort",[538,751,714],{"class":706},[753,754,755],"style",{},"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 .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 .sGXK2, html code.shiki .sGXK2{--shiki-light:#39ADB5;--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 .swvn1, html code.shiki .swvn1{--shiki-light:#39ADB5;--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 .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 .sQqfL, html code.shiki .sQqfL{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#F8F8F2}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 .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 pre.shiki code .s8HiA, html code.shiki .s8HiA{--shiki-light:#FF5370;--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}",{"title":533,"searchDepth":548,"depth":548,"links":757},[758,759,760],{"id":185,"depth":548,"text":186},{"id":384,"depth":548,"text":385},{"id":503,"depth":548,"text":504,"children":761},[762,763,764],{"id":508,"depth":611,"text":509},{"id":515,"depth":611,"text":516},{"id":656,"depth":611,"text":657},"Inference latency, memory consumption, and benchmark comparison across x86_64, ARM64, and mobile hardware.","md",null,{},{"icon":143},{"title":771,"description":765},"Performance & Benchmarks - RustO!","PnvgTppIKc5Pypi9G631jySBa4xPUO44cHkvVjPlrqc",[774,776],{"title":135,"path":136,"stem":137,"description":775,"icon":138,"children":-1},"How to configure text line orientation classifiers (CLS) and full-page document angle rotators.",{"title":145,"path":146,"stem":147,"description":777,"icon":148,"children":-1},"Resolving common issues, model asset resolution, platform-specific linking errors, and performance bottlenecks.",1792905889575]