[{"data":1,"prerenderedAt":1081},["ShallowReactive",2],{"navigation_docs_en":3,"-en-advance-guide-image-preprocessing-and-tuning":173,"-en-advance-guide-image-preprocessing-and-tuning-surround":1076},[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":130,"body":175,"description":1068,"extension":1069,"links":1070,"meta":1071,"navigation":1072,"path":131,"seo":1073,"stem":132,"__hash__":1075},"docs_en\u002Fen\u002F03.advance-guide\u002F04.image-preprocessing-and-tuning.md",{"type":176,"value":177,"toc":1059},"minimark",[178,182,187,428,431,435,445,775,777,781,786,789,874,878,881,950,954,957,1055],[179,180,181],"p",{},"RustO! gives you fine-grained, request-local control over image resizing, DBNet detector thresholds, morphological operators, and polygon clipping.",[183,184,186],"h2",{"id":185},"️-complete-preprocessing-flowchart","🛠️ Complete Preprocessing Flowchart",[188,189,194],"pre",{"className":190,"code":191,"language":192,"meta":193,"style":193},"language-mermaid shiki shiki-themes material-theme-lighter github-light github-dark monokai","flowchart TD\n    A[\"Raw Input Image\u003Cbr\u002F>(File \u002F Bytes \u002F URI)\"] --> B[\"1. Bounded Scaling\u003Cbr\u002F>(minSideLen &le; side &le; maxSideLen)\"]\n    B --> C[\"2. Morphological Padding & Normalization\u003Cbr\u002F>(Channel Mean & Std RGB)\"]\n    C --> D[\"3. DBNet Text Detection Inference\u003Cbr\u002F>(det.rten Backbone Heatmap)\"]\n    D --> E[\"4. Probability Map Binarization\u003Cbr\u002F>(threshold: 0.3)\"]\n    E --> F{\"5. Morphological Dilation?\u003Cbr\u002F>(useDilation: true\u002Ffalse)\"}\n    F -->|Enabled| G[\"2&times;2 Kernel Dilation\u003Cbr\u002F>(Connects faint\u002Fbroken text)\"]\n    F -->|Disabled| H[\"6. Pure Rust Contour Tracing\u003Cbr\u002F>(Extracts polygon vertices)\"]\n    G --> H\n    H --> I[\"7. Vatti Polygon Unclipping\u003Cbr\u002F>(unclipRatio: 1.5 - 2.0)\"]\n    I --> J[\"8. Perspective Affine Cropping\u003Cbr\u002F>(Rayon Parallel Rectification)\"]\n    J --> K[\"9. Batched CTC Recognition\u003Cbr\u002F>(rec.rten + dict.txt)\"]\n","mermaid","",[195,196,197,210,241,260,278,296,316,341,363,374,392,410],"code",{"__ignoreMap":193},[198,199,202,206],"span",{"class":200,"line":201},"line",1,[198,203,205],{"class":204},"sRxSC","flowchart",[198,207,209],{"class":208},"sD0ED"," TD\n",[198,211,213,217,220,224,227,230,233,235,238],{"class":200,"line":212},2,[198,214,216],{"class":215},"s94S9","    A",[198,218,219],{"class":204},"[",[198,221,223],{"class":222},"sLACW","\"Raw Input Image\u003Cbr\u002F>(File \u002F Bytes \u002F URI)\"",[198,225,226],{"class":204},"]",[198,228,229],{"class":204}," -->",[198,231,232],{"class":215}," B",[198,234,219],{"class":204},[198,236,237],{"class":222},"\"1. Bounded Scaling\u003Cbr\u002F>(minSideLen &le; side &le; maxSideLen)\"",[198,239,240],{"class":204},"]\n",[198,242,244,247,250,253,255,258],{"class":200,"line":243},3,[198,245,246],{"class":215},"    B ",[198,248,249],{"class":204},"-->",[198,251,252],{"class":215}," C",[198,254,219],{"class":204},[198,256,257],{"class":222},"\"2. Morphological Padding & Normalization\u003Cbr\u002F>(Channel Mean & Std RGB)\"",[198,259,240],{"class":204},[198,261,263,266,268,271,273,276],{"class":200,"line":262},4,[198,264,265],{"class":215},"    C ",[198,267,249],{"class":204},[198,269,270],{"class":215}," D",[198,272,219],{"class":204},[198,274,275],{"class":222},"\"3. DBNet Text Detection Inference\u003Cbr\u002F>(det.rten Backbone Heatmap)\"",[198,277,240],{"class":204},[198,279,281,284,286,289,291,294],{"class":200,"line":280},5,[198,282,283],{"class":215},"    D ",[198,285,249],{"class":204},[198,287,288],{"class":215}," E",[198,290,219],{"class":204},[198,292,293],{"class":222},"\"4. Probability Map Binarization\u003Cbr\u002F>(threshold: 0.3)\"",[198,295,240],{"class":204},[198,297,299,302,304,307,310,313],{"class":200,"line":298},6,[198,300,301],{"class":215},"    E ",[198,303,249],{"class":204},[198,305,306],{"class":215}," F",[198,308,309],{"class":204},"{",[198,311,312],{"class":222},"\"5. Morphological Dilation?\u003Cbr\u002F>(useDilation: true\u002Ffalse)\"",[198,314,315],{"class":204},"}\n",[198,317,319,322,325,328,331,334,336,339],{"class":200,"line":318},7,[198,320,321],{"class":215},"    F ",[198,323,324],{"class":204},"-->|",[198,326,327],{"class":222},"Enabled",[198,329,330],{"class":204},"|",[198,332,333],{"class":215}," G",[198,335,219],{"class":204},[198,337,338],{"class":222},"\"2&times;2 Kernel Dilation\u003Cbr\u002F>(Connects faint\u002Fbroken text)\"",[198,340,240],{"class":204},[198,342,344,346,348,351,353,356,358,361],{"class":200,"line":343},8,[198,345,321],{"class":215},[198,347,324],{"class":204},[198,349,350],{"class":222},"Disabled",[198,352,330],{"class":204},[198,354,355],{"class":215}," H",[198,357,219],{"class":204},[198,359,360],{"class":222},"\"6. Pure Rust Contour Tracing\u003Cbr\u002F>(Extracts polygon vertices)\"",[198,362,240],{"class":204},[198,364,366,369,371],{"class":200,"line":365},9,[198,367,368],{"class":215},"    G ",[198,370,249],{"class":204},[198,372,373],{"class":215}," H\n",[198,375,377,380,382,385,387,390],{"class":200,"line":376},10,[198,378,379],{"class":215},"    H ",[198,381,249],{"class":204},[198,383,384],{"class":215}," I",[198,386,219],{"class":204},[198,388,389],{"class":222},"\"7. Vatti Polygon Unclipping\u003Cbr\u002F>(unclipRatio: 1.5 - 2.0)\"",[198,391,240],{"class":204},[198,393,395,398,400,403,405,408],{"class":200,"line":394},11,[198,396,397],{"class":215},"    I ",[198,399,249],{"class":204},[198,401,402],{"class":215}," J",[198,404,219],{"class":204},[198,406,407],{"class":222},"\"8. Perspective Affine Cropping\u003Cbr\u002F>(Rayon Parallel Rectification)\"",[198,409,240],{"class":204},[198,411,413,416,418,421,423,426],{"class":200,"line":412},12,[198,414,415],{"class":215},"    J ",[198,417,249],{"class":204},[198,419,420],{"class":215}," K",[198,422,219],{"class":204},[198,424,425],{"class":222},"\"9. Batched CTC Recognition\u003Cbr\u002F>(rec.rten + dict.txt)\"",[198,427,240],{"class":204},[429,430],"hr",{},[183,432,434],{"id":433},"️-parameters-reference","🎛️ Parameters Reference",[179,436,437,438,440,441,444],{},"All parameters can be configured per call in ",[195,439,164],{}," (",[195,442,443],{},"DetectTextOptions"," in React Native):",[188,446,450],{"className":447,"code":448,"language":449,"meta":193,"style":193},"language-typescript shiki shiki-themes material-theme-lighter github-light github-dark monokai","const options = {\n  \u002F\u002F 1. Overall Image Scaling Bounds\n  minSideLen: 64, \u002F\u002F Minimum side bound (pixels)\n  maxSideLen: 1600, \u002F\u002F Maximum side bound (pixels) - prevents OOM on 48MP photos\n  minHeight: 32, \u002F\u002F Minimum padded height\n  widthHeightRatio: -1, \u002F\u002F -1 preserves original aspect ratio\n\n  \u002F\u002F 2. DBNet Detector Input Tuning\n  detection: {\n    limitSideLen: 960, \u002F\u002F Target resize dimension for detector\n    limitType: 'max', \u002F\u002F 'min' (boost small text) or 'max' (bound large photos)\n    mean: [0.485, 0.456, 0.406],\n    std: [0.229, 0.224, 0.225],\n  },\n\n  \u002F\u002F 3. Polygon & Binarization Postprocessing\n  postprocess: {\n    threshold: 0.3, \u002F\u002F Pixel binarization probability cutoff (0.0 to 1.0)\n    boxThreshold: 0.6, \u002F\u002F Text polygon confidence threshold (0.0 to 1.0)\n    maxCandidates: 1000, \u002F\u002F Maximum candidate polygons retained\n    unclipRatio: 2.0, \u002F\u002F Polygon boundary expansion factor\n    useDilation: true, \u002F\u002F 2x2 morphological dilation for faint\u002Fbroken text\n  },\n};\n","typescript",[195,451,452,470,476,495,510,525,543,549,554,563,578,600,629,656,662,667,673,683,699,715,731,747,764,769],{"__ignoreMap":193},[198,453,454,458,462,466],{"class":200,"line":201},[198,455,457],{"class":456},"srJo8","const",[198,459,461],{"class":460},"s91G_"," options",[198,463,465],{"class":464},"sGXK2"," =",[198,467,469],{"class":468},"swvn1"," {\n",[198,471,472],{"class":200,"line":212},[198,473,475],{"class":474},"ss7Ak","  \u002F\u002F 1. Overall Image Scaling Bounds\n",[198,477,478,482,485,489,492],{"class":200,"line":243},[198,479,481],{"class":480},"squCx","  minSideLen",[198,483,484],{"class":468},":",[198,486,488],{"class":487},"sYThS"," 64",[198,490,491],{"class":468},",",[198,493,494],{"class":474}," \u002F\u002F Minimum side bound (pixels)\n",[198,496,497,500,502,505,507],{"class":200,"line":262},[198,498,499],{"class":480},"  maxSideLen",[198,501,484],{"class":468},[198,503,504],{"class":487}," 1600",[198,506,491],{"class":468},[198,508,509],{"class":474}," \u002F\u002F Maximum side bound (pixels) - prevents OOM on 48MP photos\n",[198,511,512,515,517,520,522],{"class":200,"line":280},[198,513,514],{"class":480},"  minHeight",[198,516,484],{"class":468},[198,518,519],{"class":487}," 32",[198,521,491],{"class":468},[198,523,524],{"class":474}," \u002F\u002F Minimum padded height\n",[198,526,527,530,532,535,538,540],{"class":200,"line":298},[198,528,529],{"class":480},"  widthHeightRatio",[198,531,484],{"class":468},[198,533,534],{"class":464}," -",[198,536,537],{"class":487},"1",[198,539,491],{"class":468},[198,541,542],{"class":474}," \u002F\u002F -1 preserves original aspect ratio\n",[198,544,545],{"class":200,"line":318},[198,546,548],{"emptyLinePlaceholder":547},true,"\n",[198,550,551],{"class":200,"line":343},[198,552,553],{"class":474},"  \u002F\u002F 2. DBNet Detector Input Tuning\n",[198,555,556,559,561],{"class":200,"line":365},[198,557,558],{"class":480},"  detection",[198,560,484],{"class":468},[198,562,469],{"class":468},[198,564,565,568,570,573,575],{"class":200,"line":376},[198,566,567],{"class":480},"    limitSideLen",[198,569,484],{"class":468},[198,571,572],{"class":487}," 960",[198,574,491],{"class":468},[198,576,577],{"class":474}," \u002F\u002F Target resize dimension for detector\n",[198,579,580,583,585,589,592,595,597],{"class":200,"line":394},[198,581,582],{"class":480},"    limitType",[198,584,484],{"class":468},[198,586,588],{"class":587},"siCPE"," '",[198,590,591],{"class":222},"max",[198,593,594],{"class":587},"'",[198,596,491],{"class":468},[198,598,599],{"class":474}," \u002F\u002F 'min' (boost small text) or 'max' (bound large photos)\n",[198,601,602,605,607,611,614,616,619,621,624,626],{"class":200,"line":412},[198,603,604],{"class":480},"    mean",[198,606,484],{"class":468},[198,608,610],{"class":609},"ss--_"," [",[198,612,613],{"class":487},"0.485",[198,615,491],{"class":468},[198,617,618],{"class":487}," 0.456",[198,620,491],{"class":468},[198,622,623],{"class":487}," 0.406",[198,625,226],{"class":609},[198,627,628],{"class":468},",\n",[198,630,632,635,637,639,642,644,647,649,652,654],{"class":200,"line":631},13,[198,633,634],{"class":480},"    std",[198,636,484],{"class":468},[198,638,610],{"class":609},[198,640,641],{"class":487},"0.229",[198,643,491],{"class":468},[198,645,646],{"class":487}," 0.224",[198,648,491],{"class":468},[198,650,651],{"class":487}," 0.225",[198,653,226],{"class":609},[198,655,628],{"class":468},[198,657,659],{"class":200,"line":658},14,[198,660,661],{"class":468},"  },\n",[198,663,665],{"class":200,"line":664},15,[198,666,548],{"emptyLinePlaceholder":547},[198,668,670],{"class":200,"line":669},16,[198,671,672],{"class":474},"  \u002F\u002F 3. Polygon & Binarization Postprocessing\n",[198,674,676,679,681],{"class":200,"line":675},17,[198,677,678],{"class":480},"  postprocess",[198,680,484],{"class":468},[198,682,469],{"class":468},[198,684,686,689,691,694,696],{"class":200,"line":685},18,[198,687,688],{"class":480},"    threshold",[198,690,484],{"class":468},[198,692,693],{"class":487}," 0.3",[198,695,491],{"class":468},[198,697,698],{"class":474}," \u002F\u002F Pixel binarization probability cutoff (0.0 to 1.0)\n",[198,700,702,705,707,710,712],{"class":200,"line":701},19,[198,703,704],{"class":480},"    boxThreshold",[198,706,484],{"class":468},[198,708,709],{"class":487}," 0.6",[198,711,491],{"class":468},[198,713,714],{"class":474}," \u002F\u002F Text polygon confidence threshold (0.0 to 1.0)\n",[198,716,718,721,723,726,728],{"class":200,"line":717},20,[198,719,720],{"class":480},"    maxCandidates",[198,722,484],{"class":468},[198,724,725],{"class":487}," 1000",[198,727,491],{"class":468},[198,729,730],{"class":474}," \u002F\u002F Maximum candidate polygons retained\n",[198,732,734,737,739,742,744],{"class":200,"line":733},21,[198,735,736],{"class":480},"    unclipRatio",[198,738,484],{"class":468},[198,740,741],{"class":487}," 2.0",[198,743,491],{"class":468},[198,745,746],{"class":474}," \u002F\u002F Polygon boundary expansion factor\n",[198,748,750,753,755,759,761],{"class":200,"line":749},22,[198,751,752],{"class":480},"    useDilation",[198,754,484],{"class":468},[198,756,758],{"class":757},"s8HiA"," true",[198,760,491],{"class":468},[198,762,763],{"class":474}," \u002F\u002F 2x2 morphological dilation for faint\u002Fbroken text\n",[198,765,767],{"class":200,"line":766},23,[198,768,661],{"class":468},[198,770,772],{"class":200,"line":771},24,[198,773,774],{"class":468},"};\n",[429,776],{},[183,778,780],{"id":779},"practical-optimization-cheat-sheet","💡 Practical Optimization Cheat-Sheet",[782,783,785],"h3",{"id":784},"_1-faint-thermal-receipts-dot-matrix-prints","1. Faint Thermal Receipts & Dot-Matrix Prints",[179,787,788],{},"Thermal paper and dot-matrix receipts often feature broken character strokes:",[188,790,792],{"className":447,"code":791,"language":449,"meta":193,"style":193},"const faintReceiptOptions = {\n  textScore: 0.45,\n  postprocess: {\n    useDilation: true, \u002F\u002F Connects broken character strokes\n    threshold: 0.25, \u002F\u002F Lowers binarization threshold for light grey print\n    unclipRatio: 2.2, \u002F\u002F Generously expands text regions\n  },\n};\n",[195,793,794,805,817,825,838,852,866,870],{"__ignoreMap":193},[198,795,796,798,801,803],{"class":200,"line":201},[198,797,457],{"class":456},[198,799,800],{"class":460}," faintReceiptOptions",[198,802,465],{"class":464},[198,804,469],{"class":468},[198,806,807,810,812,815],{"class":200,"line":212},[198,808,809],{"class":480},"  textScore",[198,811,484],{"class":468},[198,813,814],{"class":487}," 0.45",[198,816,628],{"class":468},[198,818,819,821,823],{"class":200,"line":243},[198,820,678],{"class":480},[198,822,484],{"class":468},[198,824,469],{"class":468},[198,826,827,829,831,833,835],{"class":200,"line":262},[198,828,752],{"class":480},[198,830,484],{"class":468},[198,832,758],{"class":757},[198,834,491],{"class":468},[198,836,837],{"class":474}," \u002F\u002F Connects broken character strokes\n",[198,839,840,842,844,847,849],{"class":200,"line":280},[198,841,688],{"class":480},[198,843,484],{"class":468},[198,845,846],{"class":487}," 0.25",[198,848,491],{"class":468},[198,850,851],{"class":474}," \u002F\u002F Lowers binarization threshold for light grey print\n",[198,853,854,856,858,861,863],{"class":200,"line":298},[198,855,736],{"class":480},[198,857,484],{"class":468},[198,859,860],{"class":487}," 2.2",[198,862,491],{"class":468},[198,864,865],{"class":474}," \u002F\u002F Generously expands text regions\n",[198,867,868],{"class":200,"line":318},[198,869,661],{"class":468},[198,871,872],{"class":200,"line":343},[198,873,774],{"class":468},[782,875,877],{"id":876},"_2-high-resolution-mobile-camera-photos-48mp-108mp","2. High-Resolution Mobile Camera Photos (48MP - 108MP)",[179,879,880],{},"Massive raw mobile camera photos consume gigabytes of memory if not bounded before neural inference:",[188,882,884],{"className":447,"code":883,"language":449,"meta":193,"style":193},"const mobileCameraOptions = {\n  maxSideLen: 1600, \u002F\u002F Downscales before memory allocation\n  detection: {\n    limitSideLen: 960,\n    limitType: 'max',\n  },\n};\n",[195,885,886,897,910,918,928,942,946],{"__ignoreMap":193},[198,887,888,890,893,895],{"class":200,"line":201},[198,889,457],{"class":456},[198,891,892],{"class":460}," mobileCameraOptions",[198,894,465],{"class":464},[198,896,469],{"class":468},[198,898,899,901,903,905,907],{"class":200,"line":212},[198,900,499],{"class":480},[198,902,484],{"class":468},[198,904,504],{"class":487},[198,906,491],{"class":468},[198,908,909],{"class":474}," \u002F\u002F Downscales before memory allocation\n",[198,911,912,914,916],{"class":200,"line":243},[198,913,558],{"class":480},[198,915,484],{"class":468},[198,917,469],{"class":468},[198,919,920,922,924,926],{"class":200,"line":262},[198,921,567],{"class":480},[198,923,484],{"class":468},[198,925,572],{"class":487},[198,927,628],{"class":468},[198,929,930,932,934,936,938,940],{"class":200,"line":280},[198,931,582],{"class":480},[198,933,484],{"class":468},[198,935,588],{"class":587},[198,937,591],{"class":222},[198,939,594],{"class":587},[198,941,628],{"class":468},[198,943,944],{"class":200,"line":298},[198,945,661],{"class":468},[198,947,948],{"class":200,"line":318},[198,949,774],{"class":468},[782,951,953],{"id":952},"_3-small-dense-document-scans-legal-contracts-multi-column-tables","3. Small, Dense Document Scans (Legal Contracts \u002F Multi-Column Tables)",[179,955,956],{},"Ensures fine 6pt\u002F8pt fonts remain crisp during detection:",[188,958,960],{"className":447,"code":959,"language":449,"meta":193,"style":193},"const denseScanOptions = {\n  detection: {\n    limitSideLen: 1200,\n    limitType: 'min', \u002F\u002F Raises shorter side to ensure small characters are readable\n  },\n  postprocess: {\n    useDilation: false, \u002F\u002F Prevents adjacent compact characters from merging\n    unclipRatio: 1.6,\n  },\n};\n",[195,961,962,973,981,992,1010,1014,1022,1036,1047,1051],{"__ignoreMap":193},[198,963,964,966,969,971],{"class":200,"line":201},[198,965,457],{"class":456},[198,967,968],{"class":460}," denseScanOptions",[198,970,465],{"class":464},[198,972,469],{"class":468},[198,974,975,977,979],{"class":200,"line":212},[198,976,558],{"class":480},[198,978,484],{"class":468},[198,980,469],{"class":468},[198,982,983,985,987,990],{"class":200,"line":243},[198,984,567],{"class":480},[198,986,484],{"class":468},[198,988,989],{"class":487}," 1200",[198,991,628],{"class":468},[198,993,994,996,998,1000,1003,1005,1007],{"class":200,"line":262},[198,995,582],{"class":480},[198,997,484],{"class":468},[198,999,588],{"class":587},[198,1001,1002],{"class":222},"min",[198,1004,594],{"class":587},[198,1006,491],{"class":468},[198,1008,1009],{"class":474}," \u002F\u002F Raises shorter side to ensure small characters are readable\n",[198,1011,1012],{"class":200,"line":280},[198,1013,661],{"class":468},[198,1015,1016,1018,1020],{"class":200,"line":298},[198,1017,678],{"class":480},[198,1019,484],{"class":468},[198,1021,469],{"class":468},[198,1023,1024,1026,1028,1031,1033],{"class":200,"line":318},[198,1025,752],{"class":480},[198,1027,484],{"class":468},[198,1029,1030],{"class":757}," false",[198,1032,491],{"class":468},[198,1034,1035],{"class":474}," \u002F\u002F Prevents adjacent compact characters from merging\n",[198,1037,1038,1040,1042,1045],{"class":200,"line":343},[198,1039,736],{"class":480},[198,1041,484],{"class":468},[198,1043,1044],{"class":487}," 1.6",[198,1046,628],{"class":468},[198,1048,1049],{"class":200,"line":365},[198,1050,661],{"class":468},[198,1052,1053],{"class":200,"line":376},[198,1054,774],{"class":468},[1056,1057,1058],"style",{},"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 .sD0ED, html code.shiki .sD0ED{--shiki-light:#6182B8;--shiki-default:#6F42C1;--shiki-dark:#B392F0;--shiki-sepia:#A6E22E}html pre.shiki code .s94S9, html code.shiki .s94S9{--shiki-light:#90A4AE;--shiki-default:#E36209;--shiki-dark:#FFAB70;--shiki-sepia:#F8F8F2}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 .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 .s91G_, html code.shiki .s91G_{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF;--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 .swvn1, html code.shiki .swvn1{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}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 .squCx, html code.shiki .squCx{--shiki-light:#E53935;--shiki-default:#24292E;--shiki-dark:#E1E4E8;--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 .ss--_, html code.shiki .ss--_{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8;--shiki-sepia:#F8F8F2}html pre.shiki code .s8HiA, html code.shiki .s8HiA{--shiki-light:#FF5370;--shiki-default:#005CC5;--shiki-dark:#79B8FF;--shiki-sepia:#AE81FF}",{"title":193,"searchDepth":212,"depth":212,"links":1060},[1061,1062,1063],{"id":185,"depth":212,"text":186},{"id":433,"depth":212,"text":434},{"id":779,"depth":212,"text":780,"children":1064},[1065,1066,1067],{"id":784,"depth":243,"text":785},{"id":876,"depth":243,"text":877},{"id":952,"depth":243,"text":953},"Fine-tuning request-local preprocessing, DBNet detection, morphological dilation, and unclip parameters.","md",null,{},{"icon":133},{"title":1074,"description":1068},"Image Preprocessing & Tuning - RustO!","gA0CKmsbq_R--KIhOaLclT5-_-qE-QFjaVhXma4mmvg",[1077,1079],{"title":125,"path":126,"stem":127,"description":1078,"icon":128,"children":-1},"How RustO! reconstructs human-readable 2D spatial layouts for multi-column tables, invoices, receipts, and forms.",{"title":135,"path":136,"stem":137,"description":1080,"icon":138,"children":-1},"How to configure text line orientation classifiers (CLS) and full-page document angle rotators.",1792905889489]