symbol_read_trials — SYMBOL read_pod op

• Data kinds: table → table

• Call: import fullseye as fs; fs.ledger.symbol_read_trials(symbol, factor, levels, *, trials=20, reader='auto', symbologies=None, truth=None, module_px=4.0, render=None, capture=None, rotate='random', rotate_jitter_deg=5.0, level_jitter=0.0, refine=False, seed=0) (implementation को सीधे call करना हो तो import symbolpod; symbolpod.symbol_read_trials(symbol, factor, levels, *, trials=20, reader='auto', symbologies=None, truth=None, module_px=4.0, render=None, capture=None, rotate='random', rotate_jitter_deg=5.0, level_jitter=0.0, refine=False, seed=0), registry से लेना हो तो opssymbol.get("symbol_read_trials"))

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

उपयोग

हर degradation level पर symbol को trials बार capture करके पढ़ता है और हर प्रयास की एक row लौटाता है (table)।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

For each level of the degradation factor (see DEGRADATION_FACTORS), render the symbol (symrender.render_symbol), capture it (symrender.capture_degrade) and read it (symbol_read), trials times with fresh nuisance: in-plane rotation (rotate="random": uniform over 360° for 2-D symbols, ±rotate_jitter_deg around 0 for 1-D; a number fixes it), a sub-pixel offset in [0, 1) px and the sensor-noise seed. For a 1-D table the reader is restricted to the table's own symbology unless symbologies is given (a line reader enables only what it expects; all-symbology reading short-reads). render / capture hold the fixed settings of the other knobs; the sensor defaults to full_well_e = 20000, read_noise_e = 10, 8 bits. truth defaults to the table's text.

Returns columns level, trial, hit (1 = read the true text), misread (1 = read a different text), noread, text (object array), plus factor, worse_when_larger, truth, reader, stage.

level_jitter (relative, default 0) multiplies each trial's actual level by 1 + level_jitter · N(0, 1) while the table keeps the nominal level — the process variation of the line (e.g. part height moving the focus). It is a declared assumption, not a fit knob.

refine=True first runs every level with max(4, trials // 4) trials, brackets the transition (the last level read >= 95 % and the first read <= 5 %, in the order of increasing degradation) and then runs len(levels) evenly spaced levels across that bracket with trials each (stage = "coarse" / "fine"; both enter the table). Without it a coarse sweep easily ends in complete separation.

空の入力(levels が 3 未満)は ValueError。拒否(ValueError): 未知の factor、trials < 1、水準の重複・非有限、render / capture に掃引中の因子と同じ鍵、読み取り器を決められない表。

उपयोग की विस्तृत guide

• symbol_reading family guide

संदर्भ (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_symbol_package_1d — py -3.11 examples/poc_symbol_package_1d.py

• poc_symbol_part_dpm — py -3.11 examples/poc_symbol_part_dpm.py

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

render_symbol · symbol_read_pod · ocr_classify · ocr_read_line · ocr_read_trials

इसी category के (read_pod)

symbol_read · symbol_read_pod


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

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