text_lines — TEXT layout op

• Data kinds: table → table

• Call: import fullseye as fs; fs.ledger.text_lines(boxes, stroke_width=None, overlap_ratio: 'float' = 0.5, gap_ratio: 'float' = 3.0, width_ratio: 'float' = 3.0) (implementation को सीधे call करना हो तो import textregion; textregion.text_lines(boxes, stroke_width=None, overlap_ratio: 'float' = 0.5, gap_ratio: 'float' = 3.0, width_ratio: 'float' = 3.0), registry से लेना हो तो opstext.get("text_lines"))

• GPU: नहीं (केवल CPU reference implementation)

उपयोग

character candidates के rectangles को lines में समूहित करता है (जो ऊर्ध्वाधर रूप से overlap करते हैं, क्षैतिज रूप से पास हैं और जिनकी stroke width समान है उन्हें जोड़ता है)।

★नियम का आधार (माप 2026-09-27): उम्मीदवार हर स्ट्रोक के टुकड़ों के रूप में निकलते हैं (क्षैतिज रेखा और 'l' की ऊँचाई में 5 गुना अंतर), इसलिए "समान ऊँचाई" की शर्त पर 3 पंक्तियाँ 30〜60 में बँट गईं। पंक्ति की सदस्यता ऊर्ध्वाधर अतिव्याप्ति (छोटी ऊँचाई का कम से कम overlap_ratio) से तय होती है, क्षैतिज अंतराल बड़ी ऊँचाई के gap_ratio गुना के भीतर, और स्ट्रोक की चौड़ाई width_ratio गुना के भीतर।

boxes दो रूप स्वीकार करता है: (1) आयतों की N×4 सरणी [y0, x0, y1, x1] (मूल रूप), (2) text_candidates द्वारा लौटाई गई तालिका (dict; इसमें boxes अनिवार्य है, और stroke_width हो तो वही प्रयुक्त होता है)। लेजर इस op का इनपुट table घोषित करता है, इसलिए उम्मीदवारों की तालिका सीधे देने पर शृंखला text_candidates -> text_lines जुड़ जाती है (★2026-11-03: पहले तालिका देने पर int() की TypeError से विफल होता था —— रेसिपी के e2e ने पाया)। तालिका के साथ अलग से stroke_width देने पर तय नहीं होता कि कौन-सा लें, इसलिए ValueError (fail-closed)। boxes कुंजी के बिना dict भी ValueError।

Returns dict: lines (M×4 आयत) / members (हर पंक्ति के उम्मीदवार index की सूची)।

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poc_text_region_truth — py -3.11 examples/poc_text_region_truth.py

वे अगले ops जिनसे type जुड़ता है (table को input के रूप में लेते हैं)

—

इसी category के (layout)

—


*Provenance: textregion.py — TEXT operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.