[{"data":1,"prerenderedAt":3105},["ShallowReactive",2],{"navigation_docs_en":3,"-en-how-to-use-rust":173,"-en-how-to-use-rust-surround":3100},[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":36,"body":175,"description":3092,"extension":3093,"links":3094,"meta":3095,"navigation":3096,"path":37,"seo":3097,"stem":38,"__hash__":3099},"docs_en\u002Fen\u002F02.how-to\u002F00.use-rust.md",{"type":176,"value":177,"toc":3076},"minimark",[178,187,191,201,247,250,257,260,545,550,553,689,693,708,987,989,995,1001,1439,1441,1445,1451,1614,1616,1620,1624,2002,2007,2383,2385,2389,2392,2605,2608,2615,2617,2621,2628,3072],[179,180,181,182,186],"p",{},"The ",[183,184,185],"code",{},"rusto-rs"," crate is the core pure Rust engine powering all RustO! platform bindings. It provides zero-cost abstractions, memory safety, and SIMD-accelerated image preprocessing.",[188,189,15],"h2",{"id":190},"installation",[179,192,193,194,196,197,200],{},"Add ",[183,195,185],{}," to your ",[183,198,199],{},"Cargo.toml",":",[202,203,208],"pre",{"className":204,"code":205,"language":206,"meta":207,"style":207},"language-toml shiki shiki-themes material-theme-lighter github-light github-dark monokai","[dependencies]\nrusto-rs = \"0.3.2\"\n","toml","",[183,209,210,226],{"__ignoreMap":207},[211,212,215,219,223],"span",{"class":213,"line":214},"line",1,[211,216,218],{"class":217},"swvn1","[",[211,220,222],{"class":221},"sQqfL","dependencies",[211,224,225],{"class":217},"]\n",[211,227,229,233,236,240,244],{"class":213,"line":228},2,[211,230,232],{"class":231},"ss--_","rusto-rs ",[211,234,235],{"class":217},"=",[211,237,239],{"class":238},"siCPE"," \"",[211,241,243],{"class":242},"sLACW","0.3.2",[211,245,246],{"class":238},"\"\n",[248,249],"hr",{},[188,251,253,254,256],{"id":252},"_1-engine-initialization-initializeconfig","1. Engine Initialization (",[183,255,159],{},")",[179,258,259],{},"Initialize the OCR engine once per application lifecycle or thread. RustO! provides presets matching different PaddleOCR model generations:",[202,261,265],{"className":262,"code":263,"language":264,"meta":207,"style":207},"language-rust shiki shiki-themes material-theme-lighter github-light github-dark monokai","use rusto::{InitializeConfig, RustO};\n\n\u002F\u002F Initialize with the standard PP-OCRv6 preset\nlet config = InitializeConfig::ppv6(\"models\u002Fdet.rten\", \"models\u002Frec.rten\", \"models\u002Fdict.txt\")\n    .with_det_thresh(0.3)\n    .with_det_box_thresh(0.6)\n    .with_limit_side_len(736)\n    .with_limit_type(\"min\")\n    .with_unclip_ratio(2.0)\n    .with_use_dilation(true)\n    .with_text_score(0.5)\n    .with_rec_batch_num(6);\n\nlet mut ocr = RustO::initialize(config)?;\n","rust",[183,266,267,295,301,308,361,385,404,419,438,457,472,491,506,511],{"__ignoreMap":207},[211,268,269,273,277,281,284,286,289,292],{"class":213,"line":214},[211,270,272],{"class":271},"shWJe","use",[211,274,276],{"class":275},"sKvfc"," rusto",[211,278,280],{"class":279},"sGXK2","::",[211,282,283],{"class":217},"{",[211,285,159],{"class":275},[211,287,288],{"class":217},",",[211,290,291],{"class":275}," RustO",[211,293,294],{"class":217},"};\n",[211,296,297],{"class":213,"line":228},[211,298,300],{"emptyLinePlaceholder":299},true,"\n",[211,302,304],{"class":213,"line":303},3,[211,305,307],{"class":306},"ss7Ak","\u002F\u002F Initialize with the standard PP-OCRv6 preset\n",[211,309,311,315,318,320,323,325,329,332,335,338,340,342,344,347,349,351,353,356,358],{"class":213,"line":310},4,[211,312,314],{"class":313},"srJo8","let",[211,316,317],{"class":231}," config ",[211,319,235],{"class":279},[211,321,322],{"class":275}," InitializeConfig",[211,324,280],{"class":279},[211,326,328],{"class":327},"sD0ED","ppv6",[211,330,331],{"class":217},"(",[211,333,334],{"class":238},"\"",[211,336,337],{"class":242},"models\u002Fdet.rten",[211,339,334],{"class":238},[211,341,288],{"class":217},[211,343,239],{"class":238},[211,345,346],{"class":242},"models\u002Frec.rten",[211,348,334],{"class":238},[211,350,288],{"class":217},[211,352,239],{"class":238},[211,354,355],{"class":242},"models\u002Fdict.txt",[211,357,334],{"class":238},[211,359,360],{"class":217},")\n",[211,362,364,367,370,372,376,380,383],{"class":213,"line":363},5,[211,365,366],{"class":279},"    .",[211,368,369],{"class":327},"with_det_thresh",[211,371,331],{"class":217},[211,373,375],{"class":374},"sYThS","0",[211,377,379],{"class":378},"sMTiH",".",[211,381,382],{"class":374},"3",[211,384,360],{"class":217},[211,386,388,390,393,395,397,399,402],{"class":213,"line":387},6,[211,389,366],{"class":279},[211,391,392],{"class":327},"with_det_box_thresh",[211,394,331],{"class":217},[211,396,375],{"class":374},[211,398,379],{"class":378},[211,400,401],{"class":374},"6",[211,403,360],{"class":217},[211,405,407,409,412,414,417],{"class":213,"line":406},7,[211,408,366],{"class":279},[211,410,411],{"class":327},"with_limit_side_len",[211,413,331],{"class":217},[211,415,416],{"class":374},"736",[211,418,360],{"class":217},[211,420,422,424,427,429,431,434,436],{"class":213,"line":421},8,[211,423,366],{"class":279},[211,425,426],{"class":327},"with_limit_type",[211,428,331],{"class":217},[211,430,334],{"class":238},[211,432,433],{"class":242},"min",[211,435,334],{"class":238},[211,437,360],{"class":217},[211,439,441,443,446,448,451,453,455],{"class":213,"line":440},9,[211,442,366],{"class":279},[211,444,445],{"class":327},"with_unclip_ratio",[211,447,331],{"class":217},[211,449,450],{"class":374},"2",[211,452,379],{"class":378},[211,454,375],{"class":374},[211,456,360],{"class":217},[211,458,460,462,465,467,470],{"class":213,"line":459},10,[211,461,366],{"class":279},[211,463,464],{"class":327},"with_use_dilation",[211,466,331],{"class":217},[211,468,469],{"class":378},"true",[211,471,360],{"class":217},[211,473,475,477,480,482,484,486,489],{"class":213,"line":474},11,[211,476,366],{"class":279},[211,478,479],{"class":327},"with_text_score",[211,481,331],{"class":217},[211,483,375],{"class":374},[211,485,379],{"class":378},[211,487,488],{"class":374},"5",[211,490,360],{"class":217},[211,492,494,496,499,501,503],{"class":213,"line":493},12,[211,495,366],{"class":279},[211,497,498],{"class":327},"with_rec_batch_num",[211,500,331],{"class":217},[211,502,401],{"class":374},[211,504,505],{"class":217},");\n",[211,507,509],{"class":213,"line":508},13,[211,510,300],{"emptyLinePlaceholder":299},[211,512,514,516,520,523,525,527,529,532,534,537,539,542],{"class":213,"line":513},14,[211,515,314],{"class":313},[211,517,519],{"class":518},"sTNss"," mut",[211,521,522],{"class":231}," ocr ",[211,524,235],{"class":279},[211,526,291],{"class":275},[211,528,280],{"class":279},[211,530,531],{"class":327},"initialize",[211,533,331],{"class":217},[211,535,536],{"class":231},"config",[211,538,256],{"class":217},[211,540,541],{"class":279},"?",[211,543,544],{"class":217},";\n",[546,547,549],"h3",{"id":548},"auxiliary-models-orientation-cls","Auxiliary Models (Orientation & CLS)",[179,551,552],{},"For rotated scans or inverted text lines, attach orientation classification models:",[202,554,556],{"className":262,"code":555,"language":264,"meta":207,"style":207},"\u002F\u002F PP-OCRv5 with 180° line classifier (CLS) and whole-page rotator\nlet config = InitializeConfig::ppv5(\"models\u002Fdet.rten\", \"models\u002Frec.rten\", \"models\u002Fdict.txt\")\n    .with_cls_threshold(\"models\u002Fcls.rten\", 0.9)\n    .with_orientation_threshold(\"models\u002Forient.rten\", 0.85);\n\nlet mut ocr = RustO::initialize(config)?;\n",[183,557,558,563,604,632,659,663],{"__ignoreMap":207},[211,559,560],{"class":213,"line":214},[211,561,562],{"class":306},"\u002F\u002F PP-OCRv5 with 180° line classifier (CLS) and whole-page rotator\n",[211,564,565,567,569,571,573,575,578,580,582,584,586,588,590,592,594,596,598,600,602],{"class":213,"line":228},[211,566,314],{"class":313},[211,568,317],{"class":231},[211,570,235],{"class":279},[211,572,322],{"class":275},[211,574,280],{"class":279},[211,576,577],{"class":327},"ppv5",[211,579,331],{"class":217},[211,581,334],{"class":238},[211,583,337],{"class":242},[211,585,334],{"class":238},[211,587,288],{"class":217},[211,589,239],{"class":238},[211,591,346],{"class":242},[211,593,334],{"class":238},[211,595,288],{"class":217},[211,597,239],{"class":238},[211,599,355],{"class":242},[211,601,334],{"class":238},[211,603,360],{"class":217},[211,605,606,608,611,613,615,618,620,622,625,627,630],{"class":213,"line":303},[211,607,366],{"class":279},[211,609,610],{"class":327},"with_cls_threshold",[211,612,331],{"class":217},[211,614,334],{"class":238},[211,616,617],{"class":242},"models\u002Fcls.rten",[211,619,334],{"class":238},[211,621,288],{"class":217},[211,623,624],{"class":374}," 0",[211,626,379],{"class":378},[211,628,629],{"class":374},"9",[211,631,360],{"class":217},[211,633,634,636,639,641,643,646,648,650,652,654,657],{"class":213,"line":310},[211,635,366],{"class":279},[211,637,638],{"class":327},"with_orientation_threshold",[211,640,331],{"class":217},[211,642,334],{"class":238},[211,644,645],{"class":242},"models\u002Forient.rten",[211,647,334],{"class":238},[211,649,288],{"class":217},[211,651,624],{"class":374},[211,653,379],{"class":378},[211,655,656],{"class":374},"85",[211,658,505],{"class":217},[211,660,661],{"class":213,"line":363},[211,662,300],{"emptyLinePlaceholder":299},[211,664,665,667,669,671,673,675,677,679,681,683,685,687],{"class":213,"line":387},[211,666,314],{"class":313},[211,668,519],{"class":518},[211,670,522],{"class":231},[211,672,235],{"class":279},[211,674,291],{"class":275},[211,676,280],{"class":279},[211,678,531],{"class":327},[211,680,331],{"class":217},[211,682,536],{"class":231},[211,684,256],{"class":217},[211,686,541],{"class":279},[211,688,544],{"class":217},[546,690,692],{"id":691},"generic-pluggable-engine-composition","Generic & Pluggable Engine Composition",[179,694,695,696,699,700,703,704,707],{},"RustO! provides the ",[183,697,698],{},"InferenceSession"," trait and ",[183,701,702],{},"EngineSession"," enum to replace the inference backend (with ONNX Runtime ",[183,705,706],{},"ort",", Tract, Candle, or custom engines) without altering downstream OCR postprocessing:",[202,709,711],{"className":262,"code":710,"language":264,"meta":207,"style":207},"use rusto::{InferenceSession, EngineError, RustO, InitializeConfig, TextDetector, TextRecognizer};\nuse ndarray::ArrayD;\nuse std::collections::HashMap;\n\n\u002F\u002F Option 1: Supply custom inference sessions\nlet config = InitializeConfig::ppv6(\"models\u002Fdet.rten\", \"models\u002Frec.rten\", \"models\u002Fdict.txt\");\nlet ocr = RustO::with_custom_engines(config, my_det_session, my_rec_session)?;\n\n\u002F\u002F Option 2: Compose pre-configured TextDetector and TextRecognizer\nlet det = TextDetector::new(config.det.clone())?;\nlet rec = TextRecognizer::new(config.rec.clone())?;\nlet ocr = RustO::with_components(config.global, det, rec)?;\n",[183,712,713,750,764,783,787,792,832,867,871,876,913,947],{"__ignoreMap":207},[211,714,715,717,719,721,723,725,727,730,732,734,736,738,740,743,745,748],{"class":213,"line":214},[211,716,272],{"class":271},[211,718,276],{"class":275},[211,720,280],{"class":279},[211,722,283],{"class":217},[211,724,698],{"class":275},[211,726,288],{"class":217},[211,728,729],{"class":275}," EngineError",[211,731,288],{"class":217},[211,733,291],{"class":275},[211,735,288],{"class":217},[211,737,322],{"class":275},[211,739,288],{"class":217},[211,741,742],{"class":275}," TextDetector",[211,744,288],{"class":217},[211,746,747],{"class":275}," TextRecognizer",[211,749,294],{"class":217},[211,751,752,754,757,759,762],{"class":213,"line":228},[211,753,272],{"class":271},[211,755,756],{"class":275}," ndarray",[211,758,280],{"class":279},[211,760,761],{"class":275},"ArrayD",[211,763,544],{"class":217},[211,765,766,768,771,773,776,778,781],{"class":213,"line":303},[211,767,272],{"class":271},[211,769,770],{"class":275}," std",[211,772,280],{"class":279},[211,774,775],{"class":275},"collections",[211,777,280],{"class":279},[211,779,780],{"class":275},"HashMap",[211,782,544],{"class":217},[211,784,785],{"class":213,"line":310},[211,786,300],{"emptyLinePlaceholder":299},[211,788,789],{"class":213,"line":363},[211,790,791],{"class":306},"\u002F\u002F Option 1: Supply custom inference sessions\n",[211,793,794,796,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830],{"class":213,"line":387},[211,795,314],{"class":313},[211,797,317],{"class":231},[211,799,235],{"class":279},[211,801,322],{"class":275},[211,803,280],{"class":279},[211,805,328],{"class":327},[211,807,331],{"class":217},[211,809,334],{"class":238},[211,811,337],{"class":242},[211,813,334],{"class":238},[211,815,288],{"class":217},[211,817,239],{"class":238},[211,819,346],{"class":242},[211,821,334],{"class":238},[211,823,288],{"class":217},[211,825,239],{"class":238},[211,827,355],{"class":242},[211,829,334],{"class":238},[211,831,505],{"class":217},[211,833,834,836,838,840,842,844,847,849,851,853,856,858,861,863,865],{"class":213,"line":406},[211,835,314],{"class":313},[211,837,522],{"class":231},[211,839,235],{"class":279},[211,841,291],{"class":275},[211,843,280],{"class":279},[211,845,846],{"class":327},"with_custom_engines",[211,848,331],{"class":217},[211,850,536],{"class":231},[211,852,288],{"class":217},[211,854,855],{"class":231}," my_det_session",[211,857,288],{"class":217},[211,859,860],{"class":231}," my_rec_session",[211,862,256],{"class":217},[211,864,541],{"class":279},[211,866,544],{"class":217},[211,868,869],{"class":213,"line":421},[211,870,300],{"emptyLinePlaceholder":299},[211,872,873],{"class":213,"line":440},[211,874,875],{"class":306},"\u002F\u002F Option 2: Compose pre-configured TextDetector and TextRecognizer\n",[211,877,878,880,883,885,887,889,892,894,896,898,901,903,906,909,911],{"class":213,"line":459},[211,879,314],{"class":313},[211,881,882],{"class":231}," det ",[211,884,235],{"class":279},[211,886,742],{"class":275},[211,888,280],{"class":279},[211,890,891],{"class":327},"new",[211,893,331],{"class":217},[211,895,536],{"class":231},[211,897,379],{"class":279},[211,899,900],{"class":231},"det",[211,902,379],{"class":279},[211,904,905],{"class":327},"clone",[211,907,908],{"class":217},"())",[211,910,541],{"class":279},[211,912,544],{"class":217},[211,914,915,917,920,922,924,926,928,930,932,934,937,939,941,943,945],{"class":213,"line":474},[211,916,314],{"class":313},[211,918,919],{"class":231}," rec ",[211,921,235],{"class":279},[211,923,747],{"class":275},[211,925,280],{"class":279},[211,927,891],{"class":327},[211,929,331],{"class":217},[211,931,536],{"class":231},[211,933,379],{"class":279},[211,935,936],{"class":231},"rec",[211,938,379],{"class":279},[211,940,905],{"class":327},[211,942,908],{"class":217},[211,944,541],{"class":279},[211,946,544],{"class":217},[211,948,949,951,953,955,957,959,962,964,966,968,971,973,976,978,981,983,985],{"class":213,"line":493},[211,950,314],{"class":313},[211,952,522],{"class":231},[211,954,235],{"class":279},[211,956,291],{"class":275},[211,958,280],{"class":279},[211,960,961],{"class":327},"with_components",[211,963,331],{"class":217},[211,965,536],{"class":231},[211,967,379],{"class":279},[211,969,970],{"class":231},"global",[211,972,288],{"class":217},[211,974,975],{"class":231}," det",[211,977,288],{"class":217},[211,979,980],{"class":231}," rec",[211,982,256],{"class":217},[211,984,541],{"class":279},[211,986,544],{"class":217},[248,988],{},[188,990,992,993,256],{"id":991},"_2-request-local-options-ocrrunoptions","2. Request-Local Options (",[183,994,164],{},[179,996,997,998,1000],{},"Image bounds, detector resizing, dilation, unclip ratios, and output modes can be modified per detection call via ",[183,999,164],{}," without altering the initialized model sessions:",[202,1002,1004],{"className":262,"code":1003,"language":264,"meta":207,"style":207},"use rusto::{\n    DetectionRunOptions, ImageSource, OcrRunOptions, OutputGranularity,\n    PostprocessRunOptions,\n};\n\nlet options = OcrRunOptions {\n    output: OutputGranularity::Lines, \u002F\u002F OutputGranularity::Words or OutputGranularity::Spatial\n    line_y_threshold: Some(0.5),      \u002F\u002F Dynamic row clustering tolerance\n    word_x_threshold: Some(0.4),      \u002F\u002F Word\u002Fcolumn spacing tolerance\n    text_score: Some(0.55),           \u002F\u002F Minimum recognition score cutoff\n    classification: Some(true),       \u002F\u002F Evaluate CLS if configured\n    max_side_len: Some(1600.0),       \u002F\u002F Max image side length bound\n    min_height: Some(32.0),           \u002F\u002F Minimum text box height\n    detection: Some(DetectionRunOptions {\n        limit_side_len: Some(960),\n        limit_type: Some(\"max\".into()),\n        ..Default::default()\n    }),\n    postprocess: Some(PostprocessRunOptions {\n        use_dilation: Some(true),     \u002F\u002F Morphological dilation for faint receipts\n        unclip_ratio: Some(2.0),\n        threshold: Some(0.3),\n        box_threshold: Some(0.6),\n        ..Default::default()\n    }),\n    ..Default::default()\n};\n",[183,1005,1006,1017,1040,1047,1051,1055,1069,1088,1112,1135,1158,1176,1199,1222,1238,1256,1283,1300,1306,1323,1342,1362,1382,1402,1415,1420,1434],{"__ignoreMap":207},[211,1007,1008,1010,1012,1014],{"class":213,"line":214},[211,1009,272],{"class":271},[211,1011,276],{"class":275},[211,1013,280],{"class":279},[211,1015,1016],{"class":217},"{\n",[211,1018,1019,1022,1024,1027,1029,1032,1034,1037],{"class":213,"line":228},[211,1020,1021],{"class":275},"    DetectionRunOptions",[211,1023,288],{"class":217},[211,1025,1026],{"class":275}," ImageSource",[211,1028,288],{"class":217},[211,1030,1031],{"class":275}," OcrRunOptions",[211,1033,288],{"class":217},[211,1035,1036],{"class":275}," OutputGranularity",[211,1038,1039],{"class":217},",\n",[211,1041,1042,1045],{"class":213,"line":303},[211,1043,1044],{"class":275},"    PostprocessRunOptions",[211,1046,1039],{"class":217},[211,1048,1049],{"class":213,"line":310},[211,1050,294],{"class":217},[211,1052,1053],{"class":213,"line":363},[211,1054,300],{"emptyLinePlaceholder":299},[211,1056,1057,1059,1062,1064,1066],{"class":213,"line":387},[211,1058,314],{"class":313},[211,1060,1061],{"class":231}," options ",[211,1063,235],{"class":279},[211,1065,1031],{"class":275},[211,1067,1068],{"class":217}," {\n",[211,1070,1071,1074,1076,1078,1080,1083,1085],{"class":213,"line":406},[211,1072,1073],{"class":231},"    output",[211,1075,200],{"class":279},[211,1077,1036],{"class":275},[211,1079,280],{"class":279},[211,1081,1082],{"class":275},"Lines",[211,1084,288],{"class":217},[211,1086,1087],{"class":306}," \u002F\u002F OutputGranularity::Words or OutputGranularity::Spatial\n",[211,1089,1090,1093,1095,1098,1100,1102,1104,1106,1109],{"class":213,"line":421},[211,1091,1092],{"class":231},"    line_y_threshold",[211,1094,200],{"class":279},[211,1096,1097],{"class":275}," Some",[211,1099,331],{"class":217},[211,1101,375],{"class":374},[211,1103,379],{"class":378},[211,1105,488],{"class":374},[211,1107,1108],{"class":217},"),",[211,1110,1111],{"class":306},"      \u002F\u002F Dynamic row clustering tolerance\n",[211,1113,1114,1117,1119,1121,1123,1125,1127,1130,1132],{"class":213,"line":440},[211,1115,1116],{"class":231},"    word_x_threshold",[211,1118,200],{"class":279},[211,1120,1097],{"class":275},[211,1122,331],{"class":217},[211,1124,375],{"class":374},[211,1126,379],{"class":378},[211,1128,1129],{"class":374},"4",[211,1131,1108],{"class":217},[211,1133,1134],{"class":306},"      \u002F\u002F Word\u002Fcolumn spacing tolerance\n",[211,1136,1137,1140,1142,1144,1146,1148,1150,1153,1155],{"class":213,"line":459},[211,1138,1139],{"class":231},"    text_score",[211,1141,200],{"class":279},[211,1143,1097],{"class":275},[211,1145,331],{"class":217},[211,1147,375],{"class":374},[211,1149,379],{"class":378},[211,1151,1152],{"class":374},"55",[211,1154,1108],{"class":217},[211,1156,1157],{"class":306},"           \u002F\u002F Minimum recognition score cutoff\n",[211,1159,1160,1163,1165,1167,1169,1171,1173],{"class":213,"line":474},[211,1161,1162],{"class":231},"    classification",[211,1164,200],{"class":279},[211,1166,1097],{"class":275},[211,1168,331],{"class":217},[211,1170,469],{"class":378},[211,1172,1108],{"class":217},[211,1174,1175],{"class":306},"       \u002F\u002F Evaluate CLS if configured\n",[211,1177,1178,1181,1183,1185,1187,1190,1192,1194,1196],{"class":213,"line":493},[211,1179,1180],{"class":231},"    max_side_len",[211,1182,200],{"class":279},[211,1184,1097],{"class":275},[211,1186,331],{"class":217},[211,1188,1189],{"class":374},"1600",[211,1191,379],{"class":378},[211,1193,375],{"class":374},[211,1195,1108],{"class":217},[211,1197,1198],{"class":306},"       \u002F\u002F Max image side length bound\n",[211,1200,1201,1204,1206,1208,1210,1213,1215,1217,1219],{"class":213,"line":508},[211,1202,1203],{"class":231},"    min_height",[211,1205,200],{"class":279},[211,1207,1097],{"class":275},[211,1209,331],{"class":217},[211,1211,1212],{"class":374},"32",[211,1214,379],{"class":378},[211,1216,375],{"class":374},[211,1218,1108],{"class":217},[211,1220,1221],{"class":306},"           \u002F\u002F Minimum text box height\n",[211,1223,1224,1227,1229,1231,1233,1236],{"class":213,"line":513},[211,1225,1226],{"class":231},"    detection",[211,1228,200],{"class":279},[211,1230,1097],{"class":275},[211,1232,331],{"class":217},[211,1234,1235],{"class":275},"DetectionRunOptions",[211,1237,1068],{"class":217},[211,1239,1241,1244,1246,1248,1250,1253],{"class":213,"line":1240},15,[211,1242,1243],{"class":231},"        limit_side_len",[211,1245,200],{"class":279},[211,1247,1097],{"class":275},[211,1249,331],{"class":217},[211,1251,1252],{"class":374},"960",[211,1254,1255],{"class":217},"),\n",[211,1257,1259,1262,1264,1266,1268,1270,1273,1275,1277,1280],{"class":213,"line":1258},16,[211,1260,1261],{"class":231},"        limit_type",[211,1263,200],{"class":279},[211,1265,1097],{"class":275},[211,1267,331],{"class":217},[211,1269,334],{"class":238},[211,1271,1272],{"class":242},"max",[211,1274,334],{"class":238},[211,1276,379],{"class":279},[211,1278,1279],{"class":327},"into",[211,1281,1282],{"class":217},"()),\n",[211,1284,1286,1289,1292,1294,1297],{"class":213,"line":1285},17,[211,1287,1288],{"class":279},"        ..",[211,1290,1291],{"class":275},"Default",[211,1293,280],{"class":279},[211,1295,1296],{"class":327},"default",[211,1298,1299],{"class":217},"()\n",[211,1301,1303],{"class":213,"line":1302},18,[211,1304,1305],{"class":217},"    }),\n",[211,1307,1309,1312,1314,1316,1318,1321],{"class":213,"line":1308},19,[211,1310,1311],{"class":231},"    postprocess",[211,1313,200],{"class":279},[211,1315,1097],{"class":275},[211,1317,331],{"class":217},[211,1319,1320],{"class":275},"PostprocessRunOptions",[211,1322,1068],{"class":217},[211,1324,1326,1329,1331,1333,1335,1337,1339],{"class":213,"line":1325},20,[211,1327,1328],{"class":231},"        use_dilation",[211,1330,200],{"class":279},[211,1332,1097],{"class":275},[211,1334,331],{"class":217},[211,1336,469],{"class":378},[211,1338,1108],{"class":217},[211,1340,1341],{"class":306},"     \u002F\u002F Morphological dilation for faint receipts\n",[211,1343,1345,1348,1350,1352,1354,1356,1358,1360],{"class":213,"line":1344},21,[211,1346,1347],{"class":231},"        unclip_ratio",[211,1349,200],{"class":279},[211,1351,1097],{"class":275},[211,1353,331],{"class":217},[211,1355,450],{"class":374},[211,1357,379],{"class":378},[211,1359,375],{"class":374},[211,1361,1255],{"class":217},[211,1363,1365,1368,1370,1372,1374,1376,1378,1380],{"class":213,"line":1364},22,[211,1366,1367],{"class":231},"        threshold",[211,1369,200],{"class":279},[211,1371,1097],{"class":275},[211,1373,331],{"class":217},[211,1375,375],{"class":374},[211,1377,379],{"class":378},[211,1379,382],{"class":374},[211,1381,1255],{"class":217},[211,1383,1385,1388,1390,1392,1394,1396,1398,1400],{"class":213,"line":1384},23,[211,1386,1387],{"class":231},"        box_threshold",[211,1389,200],{"class":279},[211,1391,1097],{"class":275},[211,1393,331],{"class":217},[211,1395,375],{"class":374},[211,1397,379],{"class":378},[211,1399,401],{"class":374},[211,1401,1255],{"class":217},[211,1403,1405,1407,1409,1411,1413],{"class":213,"line":1404},24,[211,1406,1288],{"class":279},[211,1408,1291],{"class":275},[211,1410,280],{"class":279},[211,1412,1296],{"class":327},[211,1414,1299],{"class":217},[211,1416,1418],{"class":213,"line":1417},25,[211,1419,1305],{"class":217},[211,1421,1423,1426,1428,1430,1432],{"class":213,"line":1422},26,[211,1424,1425],{"class":279},"    ..",[211,1427,1291],{"class":275},[211,1429,280],{"class":279},[211,1431,1296],{"class":327},[211,1433,1299],{"class":217},[211,1435,1437],{"class":213,"line":1436},27,[211,1438,294],{"class":217},[248,1440],{},[188,1442,1444],{"id":1443},"_3-supported-image-sources","3. Supported Image Sources",[179,1446,1447,1450],{},[183,1448,1449],{},"ImageSource"," accepts filesystem paths or in-memory byte buffers:",[202,1452,1454],{"className":262,"code":1453,"language":264,"meta":207,"style":207},"use rusto::ImageSource;\nuse std::path::PathBuf;\n\n\u002F\u002F 1. Filesystem path (loads and decodes efficiently)\nlet source_path = ImageSource::Path(PathBuf::from(\"data\u002Finvoice.jpg\"));\n\n\u002F\u002F 2. In-memory encoded bytes (PNG, JPEG, WebP, BMP)\nlet raw_bytes: Vec\u003Cu8> = std::fs::read(\"data\u002Finvoice.jpg\")?;\nlet source_bytes = ImageSource::Bytes(raw_bytes);\n",[183,1455,1456,1468,1486,1490,1495,1532,1536,1541,1591],{"__ignoreMap":207},[211,1457,1458,1460,1462,1464,1466],{"class":213,"line":214},[211,1459,272],{"class":271},[211,1461,276],{"class":275},[211,1463,280],{"class":279},[211,1465,1449],{"class":275},[211,1467,544],{"class":217},[211,1469,1470,1472,1474,1476,1479,1481,1484],{"class":213,"line":228},[211,1471,272],{"class":271},[211,1473,770],{"class":275},[211,1475,280],{"class":279},[211,1477,1478],{"class":275},"path",[211,1480,280],{"class":279},[211,1482,1483],{"class":275},"PathBuf",[211,1485,544],{"class":217},[211,1487,1488],{"class":213,"line":303},[211,1489,300],{"emptyLinePlaceholder":299},[211,1491,1492],{"class":213,"line":310},[211,1493,1494],{"class":306},"\u002F\u002F 1. Filesystem path (loads and decodes efficiently)\n",[211,1496,1497,1499,1502,1504,1506,1508,1511,1513,1515,1517,1520,1522,1524,1527,1529],{"class":213,"line":363},[211,1498,314],{"class":313},[211,1500,1501],{"class":231}," source_path ",[211,1503,235],{"class":279},[211,1505,1026],{"class":275},[211,1507,280],{"class":279},[211,1509,1510],{"class":327},"Path",[211,1512,331],{"class":217},[211,1514,1483],{"class":275},[211,1516,280],{"class":279},[211,1518,1519],{"class":327},"from",[211,1521,331],{"class":217},[211,1523,334],{"class":238},[211,1525,1526],{"class":242},"data\u002Finvoice.jpg",[211,1528,334],{"class":238},[211,1530,1531],{"class":217},"));\n",[211,1533,1534],{"class":213,"line":387},[211,1535,300],{"emptyLinePlaceholder":299},[211,1537,1538],{"class":213,"line":406},[211,1539,1540],{"class":306},"\u002F\u002F 2. In-memory encoded bytes (PNG, JPEG, WebP, BMP)\n",[211,1542,1543,1545,1548,1550,1553,1556,1559,1562,1565,1567,1569,1572,1574,1577,1579,1581,1583,1585,1587,1589],{"class":213,"line":421},[211,1544,314],{"class":313},[211,1546,1547],{"class":231}," raw_bytes",[211,1549,200],{"class":279},[211,1551,1552],{"class":275}," Vec",[211,1554,1555],{"class":217},"\u003C",[211,1557,1558],{"class":275},"u8",[211,1560,1561],{"class":217},">",[211,1563,1564],{"class":279}," =",[211,1566,770],{"class":275},[211,1568,280],{"class":279},[211,1570,1571],{"class":275},"fs",[211,1573,280],{"class":279},[211,1575,1576],{"class":327},"read",[211,1578,331],{"class":217},[211,1580,334],{"class":238},[211,1582,1526],{"class":242},[211,1584,334],{"class":238},[211,1586,256],{"class":217},[211,1588,541],{"class":279},[211,1590,544],{"class":217},[211,1592,1593,1595,1598,1600,1602,1604,1607,1609,1612],{"class":213,"line":440},[211,1594,314],{"class":313},[211,1596,1597],{"class":231}," source_bytes ",[211,1599,235],{"class":279},[211,1601,1026],{"class":275},[211,1603,280],{"class":279},[211,1605,1606],{"class":327},"Bytes",[211,1608,331],{"class":217},[211,1610,1611],{"class":231},"raw_bytes",[211,1613,505],{"class":217},[248,1615],{},[188,1617,1619],{"id":1618},"_4-practical-recipes-output-handling","4. Practical Recipes & Output Handling",[546,1621,1623],{"id":1622},"recipe-a-extracting-structured-line-blocks","Recipe A: Extracting Structured Line Blocks",[202,1625,1627],{"className":262,"code":1626,"language":264,"meta":207,"style":207},"use rusto::{DetectTextResult, ImageSource, OcrRunOptions, OutputGranularity, RustO};\n\nlet mut options = OcrRunOptions::default();\noptions.output = OutputGranularity::Lines;\n\nlet result = ocr.detect_text(&ImageSource::Path(\"invoice.png\".into()), &options)?;\n\nif let DetectTextResult::Structured(items) = result {\n    for item in items {\n        println!(\"Text: {}\", item.text);\n        println!(\"Score: {:.3}\", item.score);\n        println!(\"Polygon Points [TL, TR, BR, BL]: {:?}\", item.box_points);\n        println!(\n            \"Axis-Aligned Frame: Left={}, Top={}, Width={}, Height={}\",\n            item.frame.left, item.frame.top, item.frame.width, item.frame.height\n        );\n    }\n}\n",[183,1628,1629,1660,1664,1683,1703,1707,1762,1766,1796,1812,1839,1869,1898,1905,1933,1987,1992,1997],{"__ignoreMap":207},[211,1630,1631,1633,1635,1637,1639,1642,1644,1646,1648,1650,1652,1654,1656,1658],{"class":213,"line":214},[211,1632,272],{"class":271},[211,1634,276],{"class":275},[211,1636,280],{"class":279},[211,1638,283],{"class":217},[211,1640,1641],{"class":275},"DetectTextResult",[211,1643,288],{"class":217},[211,1645,1026],{"class":275},[211,1647,288],{"class":217},[211,1649,1031],{"class":275},[211,1651,288],{"class":217},[211,1653,1036],{"class":275},[211,1655,288],{"class":217},[211,1657,291],{"class":275},[211,1659,294],{"class":217},[211,1661,1662],{"class":213,"line":228},[211,1663,300],{"emptyLinePlaceholder":299},[211,1665,1666,1668,1670,1672,1674,1676,1678,1680],{"class":213,"line":303},[211,1667,314],{"class":313},[211,1669,519],{"class":518},[211,1671,1061],{"class":231},[211,1673,235],{"class":279},[211,1675,1031],{"class":275},[211,1677,280],{"class":279},[211,1679,1296],{"class":327},[211,1681,1682],{"class":217},"();\n",[211,1684,1685,1688,1690,1693,1695,1697,1699,1701],{"class":213,"line":310},[211,1686,1687],{"class":231},"options",[211,1689,379],{"class":279},[211,1691,1692],{"class":231},"output ",[211,1694,235],{"class":279},[211,1696,1036],{"class":275},[211,1698,280],{"class":279},[211,1700,1082],{"class":275},[211,1702,544],{"class":217},[211,1704,1705],{"class":213,"line":363},[211,1706,300],{"emptyLinePlaceholder":299},[211,1708,1709,1711,1714,1716,1719,1721,1724,1726,1729,1731,1733,1735,1737,1739,1742,1744,1746,1748,1751,1754,1756,1758,1760],{"class":213,"line":387},[211,1710,314],{"class":313},[211,1712,1713],{"class":231}," result ",[211,1715,235],{"class":279},[211,1717,1718],{"class":231}," ocr",[211,1720,379],{"class":279},[211,1722,1723],{"class":327},"detect_text",[211,1725,331],{"class":217},[211,1727,1728],{"class":279},"&",[211,1730,1449],{"class":275},[211,1732,280],{"class":279},[211,1734,1510],{"class":327},[211,1736,331],{"class":217},[211,1738,334],{"class":238},[211,1740,1741],{"class":242},"invoice.png",[211,1743,334],{"class":238},[211,1745,379],{"class":279},[211,1747,1279],{"class":327},[211,1749,1750],{"class":217},"()),",[211,1752,1753],{"class":279}," &",[211,1755,1687],{"class":231},[211,1757,256],{"class":217},[211,1759,541],{"class":279},[211,1761,544],{"class":217},[211,1763,1764],{"class":213,"line":406},[211,1765,300],{"emptyLinePlaceholder":299},[211,1767,1768,1772,1775,1778,1780,1783,1785,1788,1790,1792,1794],{"class":213,"line":421},[211,1769,1771],{"class":1770},"sRxSC","if",[211,1773,1774],{"class":313}," let",[211,1776,1777],{"class":275}," DetectTextResult",[211,1779,280],{"class":279},[211,1781,1782],{"class":327},"Structured",[211,1784,331],{"class":217},[211,1786,1787],{"class":231},"items",[211,1789,256],{"class":217},[211,1791,1564],{"class":279},[211,1793,1713],{"class":231},[211,1795,1016],{"class":217},[211,1797,1798,1801,1804,1807,1810],{"class":213,"line":440},[211,1799,1800],{"class":1770},"    for",[211,1802,1803],{"class":231}," item ",[211,1805,1806],{"class":271},"in",[211,1808,1809],{"class":231}," items ",[211,1811,1016],{"class":217},[211,1813,1814,1817,1819,1821,1824,1827,1829,1832,1834,1837],{"class":213,"line":459},[211,1815,1816],{"class":327},"        println!",[211,1818,331],{"class":217},[211,1820,334],{"class":238},[211,1822,1823],{"class":242},"Text: ",[211,1825,1826],{"class":238},"{}\"",[211,1828,288],{"class":217},[211,1830,1831],{"class":231}," item",[211,1833,379],{"class":279},[211,1835,1836],{"class":231},"text",[211,1838,505],{"class":217},[211,1840,1841,1843,1845,1847,1850,1852,1855,1858,1860,1862,1864,1867],{"class":213,"line":474},[211,1842,1816],{"class":327},[211,1844,331],{"class":217},[211,1846,334],{"class":238},[211,1848,1849],{"class":242},"Score: ",[211,1851,283],{"class":238},[211,1853,1854],{"class":242},":.3",[211,1856,1857],{"class":238},"}\"",[211,1859,288],{"class":217},[211,1861,1831],{"class":231},[211,1863,379],{"class":279},[211,1865,1866],{"class":231},"score",[211,1868,505],{"class":217},[211,1870,1871,1873,1875,1877,1880,1882,1885,1887,1889,1891,1893,1896],{"class":213,"line":493},[211,1872,1816],{"class":327},[211,1874,331],{"class":217},[211,1876,334],{"class":238},[211,1878,1879],{"class":242},"Polygon Points [TL, TR, BR, BL]: ",[211,1881,283],{"class":238},[211,1883,1884],{"class":242},":?",[211,1886,1857],{"class":238},[211,1888,288],{"class":217},[211,1890,1831],{"class":231},[211,1892,379],{"class":279},[211,1894,1895],{"class":231},"box_points",[211,1897,505],{"class":217},[211,1899,1900,1902],{"class":213,"line":508},[211,1901,1816],{"class":327},[211,1903,1904],{"class":217},"(\n",[211,1906,1907,1910,1913,1916,1919,1921,1924,1926,1929,1931],{"class":213,"line":513},[211,1908,1909],{"class":238},"            \"",[211,1911,1912],{"class":242},"Axis-Aligned Frame: Left=",[211,1914,1915],{"class":238},"{}",[211,1917,1918],{"class":242},", Top=",[211,1920,1915],{"class":238},[211,1922,1923],{"class":242},", Width=",[211,1925,1915],{"class":238},[211,1927,1928],{"class":242},", Height=",[211,1930,1826],{"class":238},[211,1932,1039],{"class":217},[211,1934,1935,1938,1940,1943,1945,1948,1950,1952,1954,1956,1958,1961,1963,1965,1967,1969,1971,1974,1976,1978,1980,1982,1984],{"class":213,"line":1240},[211,1936,1937],{"class":231},"            item",[211,1939,379],{"class":279},[211,1941,1942],{"class":231},"frame",[211,1944,379],{"class":279},[211,1946,1947],{"class":231},"left",[211,1949,288],{"class":217},[211,1951,1831],{"class":231},[211,1953,379],{"class":279},[211,1955,1942],{"class":231},[211,1957,379],{"class":279},[211,1959,1960],{"class":231},"top",[211,1962,288],{"class":217},[211,1964,1831],{"class":231},[211,1966,379],{"class":279},[211,1968,1942],{"class":231},[211,1970,379],{"class":279},[211,1972,1973],{"class":231},"width",[211,1975,288],{"class":217},[211,1977,1831],{"class":231},[211,1979,379],{"class":279},[211,1981,1942],{"class":231},[211,1983,379],{"class":279},[211,1985,1986],{"class":231},"height\n",[211,1988,1989],{"class":213,"line":1258},[211,1990,1991],{"class":217},"        );\n",[211,1993,1994],{"class":213,"line":1285},[211,1995,1996],{"class":217},"    }\n",[211,1998,1999],{"class":213,"line":1302},[211,2000,2001],{"class":217},"}\n",[2003,2004,2006],"h4",{"id":2005},"example-output","Example Output:",[202,2008,2012],{"className":2009,"code":2010,"language":2011,"meta":207,"style":207},"language-json shiki shiki-themes material-theme-lighter github-light github-dark monokai","[\n  {\n    \"text\": \"INVOICE #98214\",\n    \"score\": 0.992,\n    \"box_points\": [\n      [42.0, 35.0],\n      [210.0, 35.0],\n      [210.0, 58.0],\n      [42.0, 58.0]\n    ],\n    \"frame\": { \"left\": 42.0, \"top\": 35.0, \"width\": 168.0, \"height\": 23.0 }\n  },\n  {\n    \"text\": \"Total Amount: $450.00\",\n    \"score\": 0.985,\n    \"box_points\": [\n      [42.0, 280.0],\n      [245.0, 280.0],\n      [245.0, 304.0],\n      [42.0, 304.0]\n    ],\n    \"frame\": { \"left\": 42.0, \"top\": 280.0, \"width\": 203.0, \"height\": 24.0 }\n  }\n]\n","json",[183,2013,2014,2019,2024,2048,2063,2076,2092,2105,2118,2130,2135,2202,2207,2211,2230,2245,2257,2270,2283,2296,2308,2312,2374,2379],{"__ignoreMap":207},[211,2015,2016],{"class":213,"line":214},[211,2017,2018],{"class":217},"[\n",[211,2020,2021],{"class":213,"line":228},[211,2022,2023],{"class":217},"  {\n",[211,2025,2026,2030,2033,2035,2037,2040,2044,2046],{"class":213,"line":303},[211,2027,2029],{"class":2028},"saDeg","    \"",[211,2031,1836],{"class":2032},"sEff5",[211,2034,334],{"class":2028},[211,2036,200],{"class":217},[211,2038,239],{"class":2039},"sh1VR",[211,2041,2043],{"class":2042},"sINAO","INVOICE #98214",[211,2045,334],{"class":2039},[211,2047,1039],{"class":217},[211,2049,2050,2052,2054,2056,2058,2061],{"class":213,"line":310},[211,2051,2029],{"class":2028},[211,2053,1866],{"class":2032},[211,2055,334],{"class":2028},[211,2057,200],{"class":217},[211,2059,2060],{"class":374}," 0.992",[211,2062,1039],{"class":217},[211,2064,2065,2067,2069,2071,2073],{"class":213,"line":363},[211,2066,2029],{"class":2028},[211,2068,1895],{"class":2032},[211,2070,334],{"class":2028},[211,2072,200],{"class":217},[211,2074,2075],{"class":217}," [\n",[211,2077,2078,2081,2084,2086,2089],{"class":213,"line":387},[211,2079,2080],{"class":217},"      [",[211,2082,2083],{"class":374},"42.0",[211,2085,288],{"class":217},[211,2087,2088],{"class":374}," 35.0",[211,2090,2091],{"class":217},"],\n",[211,2093,2094,2096,2099,2101,2103],{"class":213,"line":406},[211,2095,2080],{"class":217},[211,2097,2098],{"class":374},"210.0",[211,2100,288],{"class":217},[211,2102,2088],{"class":374},[211,2104,2091],{"class":217},[211,2106,2107,2109,2111,2113,2116],{"class":213,"line":421},[211,2108,2080],{"class":217},[211,2110,2098],{"class":374},[211,2112,288],{"class":217},[211,2114,2115],{"class":374}," 58.0",[211,2117,2091],{"class":217},[211,2119,2120,2122,2124,2126,2128],{"class":213,"line":440},[211,2121,2080],{"class":217},[211,2123,2083],{"class":374},[211,2125,288],{"class":217},[211,2127,2115],{"class":374},[211,2129,225],{"class":217},[211,2131,2132],{"class":213,"line":459},[211,2133,2134],{"class":217},"    ],\n",[211,2136,2137,2139,2141,2143,2145,2148,2150,2153,2155,2157,2160,2162,2164,2166,2168,2170,2172,2174,2176,2178,2180,2182,2185,2187,2189,2192,2194,2196,2199],{"class":213,"line":474},[211,2138,2029],{"class":2028},[211,2140,1942],{"class":2032},[211,2142,334],{"class":2028},[211,2144,200],{"class":217},[211,2146,2147],{"class":217}," {",[211,2149,239],{"class":2028},[211,2151,1947],{"class":2152},"s_MOj",[211,2154,334],{"class":2028},[211,2156,200],{"class":217},[211,2158,2159],{"class":374}," 42.0",[211,2161,288],{"class":217},[211,2163,239],{"class":2028},[211,2165,1960],{"class":2152},[211,2167,334],{"class":2028},[211,2169,200],{"class":217},[211,2171,2088],{"class":374},[211,2173,288],{"class":217},[211,2175,239],{"class":2028},[211,2177,1973],{"class":2152},[211,2179,334],{"class":2028},[211,2181,200],{"class":217},[211,2183,2184],{"class":374}," 168.0",[211,2186,288],{"class":217},[211,2188,239],{"class":2028},[211,2190,2191],{"class":2152},"height",[211,2193,334],{"class":2028},[211,2195,200],{"class":217},[211,2197,2198],{"class":374}," 23.0",[211,2200,2201],{"class":217}," }\n",[211,2203,2204],{"class":213,"line":493},[211,2205,2206],{"class":217},"  },\n",[211,2208,2209],{"class":213,"line":508},[211,2210,2023],{"class":217},[211,2212,2213,2215,2217,2219,2221,2223,2226,2228],{"class":213,"line":513},[211,2214,2029],{"class":2028},[211,2216,1836],{"class":2032},[211,2218,334],{"class":2028},[211,2220,200],{"class":217},[211,2222,239],{"class":2039},[211,2224,2225],{"class":2042},"Total Amount: $450.00",[211,2227,334],{"class":2039},[211,2229,1039],{"class":217},[211,2231,2232,2234,2236,2238,2240,2243],{"class":213,"line":1240},[211,2233,2029],{"class":2028},[211,2235,1866],{"class":2032},[211,2237,334],{"class":2028},[211,2239,200],{"class":217},[211,2241,2242],{"class":374}," 0.985",[211,2244,1039],{"class":217},[211,2246,2247,2249,2251,2253,2255],{"class":213,"line":1258},[211,2248,2029],{"class":2028},[211,2250,1895],{"class":2032},[211,2252,334],{"class":2028},[211,2254,200],{"class":217},[211,2256,2075],{"class":217},[211,2258,2259,2261,2263,2265,2268],{"class":213,"line":1285},[211,2260,2080],{"class":217},[211,2262,2083],{"class":374},[211,2264,288],{"class":217},[211,2266,2267],{"class":374}," 280.0",[211,2269,2091],{"class":217},[211,2271,2272,2274,2277,2279,2281],{"class":213,"line":1302},[211,2273,2080],{"class":217},[211,2275,2276],{"class":374},"245.0",[211,2278,288],{"class":217},[211,2280,2267],{"class":374},[211,2282,2091],{"class":217},[211,2284,2285,2287,2289,2291,2294],{"class":213,"line":1308},[211,2286,2080],{"class":217},[211,2288,2276],{"class":374},[211,2290,288],{"class":217},[211,2292,2293],{"class":374}," 304.0",[211,2295,2091],{"class":217},[211,2297,2298,2300,2302,2304,2306],{"class":213,"line":1325},[211,2299,2080],{"class":217},[211,2301,2083],{"class":374},[211,2303,288],{"class":217},[211,2305,2293],{"class":374},[211,2307,225],{"class":217},[211,2309,2310],{"class":213,"line":1344},[211,2311,2134],{"class":217},[211,2313,2314,2316,2318,2320,2322,2324,2326,2328,2330,2332,2334,2336,2338,2340,2342,2344,2346,2348,2350,2352,2354,2356,2359,2361,2363,2365,2367,2369,2372],{"class":213,"line":1364},[211,2315,2029],{"class":2028},[211,2317,1942],{"class":2032},[211,2319,334],{"class":2028},[211,2321,200],{"class":217},[211,2323,2147],{"class":217},[211,2325,239],{"class":2028},[211,2327,1947],{"class":2152},[211,2329,334],{"class":2028},[211,2331,200],{"class":217},[211,2333,2159],{"class":374},[211,2335,288],{"class":217},[211,2337,239],{"class":2028},[211,2339,1960],{"class":2152},[211,2341,334],{"class":2028},[211,2343,200],{"class":217},[211,2345,2267],{"class":374},[211,2347,288],{"class":217},[211,2349,239],{"class":2028},[211,2351,1973],{"class":2152},[211,2353,334],{"class":2028},[211,2355,200],{"class":217},[211,2357,2358],{"class":374}," 203.0",[211,2360,288],{"class":217},[211,2362,239],{"class":2028},[211,2364,2191],{"class":2152},[211,2366,334],{"class":2028},[211,2368,200],{"class":217},[211,2370,2371],{"class":374}," 24.0",[211,2373,2201],{"class":217},[211,2375,2376],{"class":213,"line":1384},[211,2377,2378],{"class":217},"  }\n",[211,2380,2381],{"class":213,"line":1404},[211,2382,225],{"class":217},[248,2384],{},[546,2386,2388],{"id":2387},"recipe-b-reconstructing-document-spatial-layout","Recipe B: Reconstructing Document Spatial Layout",[179,2390,2391],{},"Preserve multi-column table alignment, invoice columns, and form fields into formatted text:",[202,2393,2395],{"className":262,"code":2394,"language":264,"meta":207,"style":207},"use rusto::{DetectTextResult, ImageSource, OcrRunOptions, OutputGranularity};\n\nlet mut options = OcrRunOptions::default();\noptions.output = OutputGranularity::Spatial;\noptions.line_y_threshold = Some(0.5);\noptions.word_x_threshold = Some(0.4);\n\nif let DetectTextResult::Spatial(layout_text) = ocr.detect_text(\n    &ImageSource::Path(\"table.png\".into()),\n    &options,\n)? {\n    println!(\"{layout_text}\");\n}\n",[183,2396,2397,2423,2427,2445,2464,2487,2510,2514,2543,2569,2577,2585,2601],{"__ignoreMap":207},[211,2398,2399,2401,2403,2405,2407,2409,2411,2413,2415,2417,2419,2421],{"class":213,"line":214},[211,2400,272],{"class":271},[211,2402,276],{"class":275},[211,2404,280],{"class":279},[211,2406,283],{"class":217},[211,2408,1641],{"class":275},[211,2410,288],{"class":217},[211,2412,1026],{"class":275},[211,2414,288],{"class":217},[211,2416,1031],{"class":275},[211,2418,288],{"class":217},[211,2420,1036],{"class":275},[211,2422,294],{"class":217},[211,2424,2425],{"class":213,"line":228},[211,2426,300],{"emptyLinePlaceholder":299},[211,2428,2429,2431,2433,2435,2437,2439,2441,2443],{"class":213,"line":303},[211,2430,314],{"class":313},[211,2432,519],{"class":518},[211,2434,1061],{"class":231},[211,2436,235],{"class":279},[211,2438,1031],{"class":275},[211,2440,280],{"class":279},[211,2442,1296],{"class":327},[211,2444,1682],{"class":217},[211,2446,2447,2449,2451,2453,2455,2457,2459,2462],{"class":213,"line":310},[211,2448,1687],{"class":231},[211,2450,379],{"class":279},[211,2452,1692],{"class":231},[211,2454,235],{"class":279},[211,2456,1036],{"class":275},[211,2458,280],{"class":279},[211,2460,2461],{"class":275},"Spatial",[211,2463,544],{"class":217},[211,2465,2466,2468,2470,2473,2475,2477,2479,2481,2483,2485],{"class":213,"line":363},[211,2467,1687],{"class":231},[211,2469,379],{"class":279},[211,2471,2472],{"class":231},"line_y_threshold ",[211,2474,235],{"class":279},[211,2476,1097],{"class":275},[211,2478,331],{"class":217},[211,2480,375],{"class":374},[211,2482,379],{"class":378},[211,2484,488],{"class":374},[211,2486,505],{"class":217},[211,2488,2489,2491,2493,2496,2498,2500,2502,2504,2506,2508],{"class":213,"line":387},[211,2490,1687],{"class":231},[211,2492,379],{"class":279},[211,2494,2495],{"class":231},"word_x_threshold ",[211,2497,235],{"class":279},[211,2499,1097],{"class":275},[211,2501,331],{"class":217},[211,2503,375],{"class":374},[211,2505,379],{"class":378},[211,2507,1129],{"class":374},[211,2509,505],{"class":217},[211,2511,2512],{"class":213,"line":406},[211,2513,300],{"emptyLinePlaceholder":299},[211,2515,2516,2518,2520,2522,2524,2526,2528,2531,2533,2535,2537,2539,2541],{"class":213,"line":421},[211,2517,1771],{"class":1770},[211,2519,1774],{"class":313},[211,2521,1777],{"class":275},[211,2523,280],{"class":279},[211,2525,2461],{"class":327},[211,2527,331],{"class":217},[211,2529,2530],{"class":231},"layout_text",[211,2532,256],{"class":217},[211,2534,1564],{"class":279},[211,2536,1718],{"class":231},[211,2538,379],{"class":279},[211,2540,1723],{"class":327},[211,2542,1904],{"class":217},[211,2544,2545,2548,2550,2552,2554,2556,2558,2561,2563,2565,2567],{"class":213,"line":440},[211,2546,2547],{"class":279},"    &",[211,2549,1449],{"class":275},[211,2551,280],{"class":279},[211,2553,1510],{"class":327},[211,2555,331],{"class":217},[211,2557,334],{"class":238},[211,2559,2560],{"class":242},"table.png",[211,2562,334],{"class":238},[211,2564,379],{"class":279},[211,2566,1279],{"class":327},[211,2568,1282],{"class":217},[211,2570,2571,2573,2575],{"class":213,"line":459},[211,2572,2547],{"class":279},[211,2574,1687],{"class":231},[211,2576,1039],{"class":217},[211,2578,2579,2581,2583],{"class":213,"line":474},[211,2580,256],{"class":217},[211,2582,541],{"class":279},[211,2584,1068],{"class":217},[211,2586,2587,2590,2592,2595,2597,2599],{"class":213,"line":493},[211,2588,2589],{"class":327},"    println!",[211,2591,331],{"class":217},[211,2593,2594],{"class":238},"\"{",[211,2596,2530],{"class":242},[211,2598,1857],{"class":238},[211,2600,505],{"class":217},[211,2602,2603],{"class":213,"line":508},[211,2604,2001],{"class":217},[2003,2606,2006],{"id":2607},"example-output-1",[202,2609,2613],{"className":2610,"code":2612,"language":1836,"meta":207},[2611],"language-text","Item Description           Quantity     Unit Price     Subtotal\nWidget Pro X100                   2         $75.00      $150.00\nHeavy Duty Cable                  4         $12.50       $50.00\nMounting Bracket                  1         $35.00       $35.00\n───────────────────────────────────────────────────────────────\nTotal Due:                                              $235.00\n",[183,2614,2612],{"__ignoreMap":207},[248,2616],{},[546,2618,2620],{"id":2619},"recipe-c-multi-threaded-batch-processing-with-rayon","Recipe C: Multi-Threaded Batch Processing with Rayon",[179,2622,2623,2624,2627],{},"Because ",[183,2625,2626],{},"RustO"," instances hold inference session state, use thread-local instances or worker thread pools for concurrent high-throughput workloads:",[202,2629,2631],{"className":262,"code":2630,"language":264,"meta":207,"style":207},"use rayon::prelude::*;\nuse rusto::{DetectTextResult, ImageSource, InitializeConfig, OcrRunOptions, RustO};\nuse std::path::PathBuf;\n\nlet image_paths: Vec\u003CPathBuf> = vec![\n    \"doc1.jpg\".into(),\n    \"doc2.jpg\".into(),\n    \"doc3.jpg\".into(),\n    \"doc4.jpg\".into(),\n];\n\n\u002F\u002F Process concurrently across CPU cores\nimage_paths.par_iter().for_each(|path| {\n    \u002F\u002F Each thread initializes its own lightweight session\n    let config = InitializeConfig::ppv6(\"models\u002Fdet.rten\", \"models\u002Frec.rten\", \"models\u002Fdict.txt\");\n    let mut thread_ocr = RustO::initialize(config).expect(\"Failed to init thread OCR\");\n\n    let result = thread_ocr.detect_text(\n        &ImageSource::Path(path.clone()),\n        &OcrRunOptions::default(),\n    ).expect(\"OCR error\");\n\n    if let DetectTextResult::Structured(lines) = result {\n        println!(\"Processed {:?}: {} lines found\", path, lines.len());\n    }\n});\n",[183,2632,2633,2650,2680,2696,2700,2724,2740,2755,2770,2785,2790,2794,2799,2828,2833,2874,2913,2917,2934,2955,2967,2987,2991,3017,3063,3067],{"__ignoreMap":207},[211,2634,2635,2637,2640,2642,2645,2648],{"class":213,"line":214},[211,2636,272],{"class":271},[211,2638,2639],{"class":275}," rayon",[211,2641,280],{"class":279},[211,2643,2644],{"class":275},"prelude",[211,2646,2647],{"class":279},"::*",[211,2649,544],{"class":217},[211,2651,2652,2654,2656,2658,2660,2662,2664,2666,2668,2670,2672,2674,2676,2678],{"class":213,"line":228},[211,2653,272],{"class":271},[211,2655,276],{"class":275},[211,2657,280],{"class":279},[211,2659,283],{"class":217},[211,2661,1641],{"class":275},[211,2663,288],{"class":217},[211,2665,1026],{"class":275},[211,2667,288],{"class":217},[211,2669,322],{"class":275},[211,2671,288],{"class":217},[211,2673,1031],{"class":275},[211,2675,288],{"class":217},[211,2677,291],{"class":275},[211,2679,294],{"class":217},[211,2681,2682,2684,2686,2688,2690,2692,2694],{"class":213,"line":303},[211,2683,272],{"class":271},[211,2685,770],{"class":275},[211,2687,280],{"class":279},[211,2689,1478],{"class":275},[211,2691,280],{"class":279},[211,2693,1483],{"class":275},[211,2695,544],{"class":217},[211,2697,2698],{"class":213,"line":310},[211,2699,300],{"emptyLinePlaceholder":299},[211,2701,2702,2704,2707,2709,2711,2713,2715,2717,2719,2722],{"class":213,"line":363},[211,2703,314],{"class":313},[211,2705,2706],{"class":231}," image_paths",[211,2708,200],{"class":279},[211,2710,1552],{"class":275},[211,2712,1555],{"class":217},[211,2714,1483],{"class":275},[211,2716,1561],{"class":217},[211,2718,1564],{"class":279},[211,2720,2721],{"class":327}," vec!",[211,2723,2018],{"class":217},[211,2725,2726,2728,2731,2733,2735,2737],{"class":213,"line":387},[211,2727,2029],{"class":238},[211,2729,2730],{"class":242},"doc1.jpg",[211,2732,334],{"class":238},[211,2734,379],{"class":279},[211,2736,1279],{"class":327},[211,2738,2739],{"class":217},"(),\n",[211,2741,2742,2744,2747,2749,2751,2753],{"class":213,"line":406},[211,2743,2029],{"class":238},[211,2745,2746],{"class":242},"doc2.jpg",[211,2748,334],{"class":238},[211,2750,379],{"class":279},[211,2752,1279],{"class":327},[211,2754,2739],{"class":217},[211,2756,2757,2759,2762,2764,2766,2768],{"class":213,"line":421},[211,2758,2029],{"class":238},[211,2760,2761],{"class":242},"doc3.jpg",[211,2763,334],{"class":238},[211,2765,379],{"class":279},[211,2767,1279],{"class":327},[211,2769,2739],{"class":217},[211,2771,2772,2774,2777,2779,2781,2783],{"class":213,"line":440},[211,2773,2029],{"class":238},[211,2775,2776],{"class":242},"doc4.jpg",[211,2778,334],{"class":238},[211,2780,379],{"class":279},[211,2782,1279],{"class":327},[211,2784,2739],{"class":217},[211,2786,2787],{"class":213,"line":459},[211,2788,2789],{"class":217},"];\n",[211,2791,2792],{"class":213,"line":474},[211,2793,300],{"emptyLinePlaceholder":299},[211,2795,2796],{"class":213,"line":493},[211,2797,2798],{"class":306},"\u002F\u002F Process concurrently across CPU cores\n",[211,2800,2801,2804,2806,2809,2812,2814,2817,2819,2822,2824,2826],{"class":213,"line":508},[211,2802,2803],{"class":231},"image_paths",[211,2805,379],{"class":279},[211,2807,2808],{"class":327},"par_iter",[211,2810,2811],{"class":217},"()",[211,2813,379],{"class":279},[211,2815,2816],{"class":327},"for_each",[211,2818,331],{"class":217},[211,2820,2821],{"class":279},"|",[211,2823,1478],{"class":231},[211,2825,2821],{"class":279},[211,2827,1068],{"class":217},[211,2829,2830],{"class":213,"line":513},[211,2831,2832],{"class":306},"    \u002F\u002F Each thread initializes its own lightweight session\n",[211,2834,2835,2838,2840,2842,2844,2846,2848,2850,2852,2854,2856,2858,2860,2862,2864,2866,2868,2870,2872],{"class":213,"line":1240},[211,2836,2837],{"class":313},"    let",[211,2839,317],{"class":231},[211,2841,235],{"class":279},[211,2843,322],{"class":275},[211,2845,280],{"class":279},[211,2847,328],{"class":327},[211,2849,331],{"class":217},[211,2851,334],{"class":238},[211,2853,337],{"class":242},[211,2855,334],{"class":238},[211,2857,288],{"class":217},[211,2859,239],{"class":238},[211,2861,346],{"class":242},[211,2863,334],{"class":238},[211,2865,288],{"class":217},[211,2867,239],{"class":238},[211,2869,355],{"class":242},[211,2871,334],{"class":238},[211,2873,505],{"class":217},[211,2875,2876,2878,2880,2883,2885,2887,2889,2891,2893,2895,2897,2899,2902,2904,2906,2909,2911],{"class":213,"line":1258},[211,2877,2837],{"class":313},[211,2879,519],{"class":518},[211,2881,2882],{"class":231}," thread_ocr ",[211,2884,235],{"class":279},[211,2886,291],{"class":275},[211,2888,280],{"class":279},[211,2890,531],{"class":327},[211,2892,331],{"class":217},[211,2894,536],{"class":231},[211,2896,256],{"class":217},[211,2898,379],{"class":279},[211,2900,2901],{"class":327},"expect",[211,2903,331],{"class":217},[211,2905,334],{"class":238},[211,2907,2908],{"class":242},"Failed to init thread OCR",[211,2910,334],{"class":238},[211,2912,505],{"class":217},[211,2914,2915],{"class":213,"line":1285},[211,2916,300],{"emptyLinePlaceholder":299},[211,2918,2919,2921,2923,2925,2928,2930,2932],{"class":213,"line":1302},[211,2920,2837],{"class":313},[211,2922,1713],{"class":231},[211,2924,235],{"class":279},[211,2926,2927],{"class":231}," thread_ocr",[211,2929,379],{"class":279},[211,2931,1723],{"class":327},[211,2933,1904],{"class":217},[211,2935,2936,2939,2941,2943,2945,2947,2949,2951,2953],{"class":213,"line":1308},[211,2937,2938],{"class":279},"        &",[211,2940,1449],{"class":275},[211,2942,280],{"class":279},[211,2944,1510],{"class":327},[211,2946,331],{"class":217},[211,2948,1478],{"class":231},[211,2950,379],{"class":279},[211,2952,905],{"class":327},[211,2954,1282],{"class":217},[211,2956,2957,2959,2961,2963,2965],{"class":213,"line":1325},[211,2958,2938],{"class":279},[211,2960,164],{"class":275},[211,2962,280],{"class":279},[211,2964,1296],{"class":327},[211,2966,2739],{"class":217},[211,2968,2969,2972,2974,2976,2978,2980,2983,2985],{"class":213,"line":1344},[211,2970,2971],{"class":217},"    )",[211,2973,379],{"class":279},[211,2975,2901],{"class":327},[211,2977,331],{"class":217},[211,2979,334],{"class":238},[211,2981,2982],{"class":242},"OCR error",[211,2984,334],{"class":238},[211,2986,505],{"class":217},[211,2988,2989],{"class":213,"line":1364},[211,2990,300],{"emptyLinePlaceholder":299},[211,2992,2993,2996,2998,3000,3002,3004,3006,3009,3011,3013,3015],{"class":213,"line":1384},[211,2994,2995],{"class":1770},"    if",[211,2997,1774],{"class":313},[211,2999,1777],{"class":275},[211,3001,280],{"class":279},[211,3003,1782],{"class":327},[211,3005,331],{"class":217},[211,3007,3008],{"class":231},"lines",[211,3010,256],{"class":217},[211,3012,1564],{"class":279},[211,3014,1713],{"class":231},[211,3016,1016],{"class":217},[211,3018,3019,3021,3023,3025,3028,3030,3032,3035,3038,3040,3043,3045,3047,3050,3052,3055,3057,3060],{"class":213,"line":1404},[211,3020,1816],{"class":327},[211,3022,331],{"class":217},[211,3024,334],{"class":238},[211,3026,3027],{"class":242},"Processed ",[211,3029,283],{"class":238},[211,3031,1884],{"class":242},[211,3033,3034],{"class":238},"}",[211,3036,3037],{"class":242},": ",[211,3039,1915],{"class":238},[211,3041,3042],{"class":242}," lines found",[211,3044,334],{"class":238},[211,3046,288],{"class":217},[211,3048,3049],{"class":231}," path",[211,3051,288],{"class":217},[211,3053,3054],{"class":231}," lines",[211,3056,379],{"class":279},[211,3058,3059],{"class":327},"len",[211,3061,3062],{"class":217},"());\n",[211,3064,3065],{"class":213,"line":1417},[211,3066,1996],{"class":217},[211,3068,3069],{"class":213,"line":1422},[211,3070,3071],{"class":217},"});\n",[3073,3074,3075],"style",{},"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 .sQqfL, html code.shiki .sQqfL{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#F8F8F2}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 .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 .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 .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 .sD0ED, html code.shiki .sD0ED{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}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 .sTNss, html code.shiki .sTNss{--shiki-light:#9C3EDA;--shiki-default:#D73A49;--shiki-dark:#F97583;--shiki-sepia:#F92672}html pre.shiki code .sRxSC, html code.shiki .sRxSC{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#D73A49;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit;--shiki-sepia:#F92672;--shiki-sepia-font-style:inherit}html pre.shiki code .saDeg, html code.shiki .saDeg{--shiki-light:#39ADB5;--shiki-light-font-style:inherit;--shiki-default:#005CC5;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .sEff5, html code.shiki .sEff5{--shiki-light:#9C3EDA;--shiki-light-font-style:inherit;--shiki-default:#005CC5;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}html pre.shiki code .sh1VR, html code.shiki .sh1VR{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#CFCFC2}html pre.shiki code .sINAO, html code.shiki .sINAO{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF;--shiki-sepia:#CFCFC2}html pre.shiki code .s_MOj, html code.shiki .s_MOj{--shiki-light:#E2931D;--shiki-light-font-style:inherit;--shiki-default:#005CC5;--shiki-default-font-style:inherit;--shiki-dark:#79B8FF;--shiki-dark-font-style:inherit;--shiki-sepia:#66D9EF;--shiki-sepia-font-style:italic}",{"title":207,"searchDepth":228,"depth":228,"links":3077},[3078,3079,3084,3086,3087],{"id":190,"depth":228,"text":15},{"id":252,"depth":228,"text":3080,"children":3081},"1. Engine Initialization (InitializeConfig)",[3082,3083],{"id":548,"depth":303,"text":549},{"id":691,"depth":303,"text":692},{"id":991,"depth":228,"text":3085},"2. Request-Local Options (OcrRunOptions)",{"id":1443,"depth":228,"text":1444},{"id":1618,"depth":228,"text":1619,"children":3088},[3089,3090,3091],{"id":1622,"depth":303,"text":1623},{"id":2387,"depth":303,"text":2388},{"id":2619,"depth":303,"text":2620},"Using the pure Rust RustO! OCR engine and API in Rust applications.","md",null,{},{"icon":39},{"title":3098,"description":3092},"Use Rust - RustO!","BITVRb7kckWnqUX0VA4f4vYhd9XUgm9Zp-wI_A_6qW0",[3101,3103],{"title":25,"path":26,"stem":27,"description":3102,"icon":28,"children":-1},"Experience RustO! OCR directly in your browser powered by WebAssembly and pre-trained PaddleOCR models.",{"title":41,"path":42,"stem":43,"description":3104,"icon":44,"children":-1},"Using RustODotnet in C# and .NET applications across Windows, Linux, and macOS.",1792905888204]