read_pod op• 데이터 종류: table → table
• 호출: 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)(구현을 직접 호출하려면 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), 원장에서 가져오려면 opssymbol.get("symbol_read_trials"))
• GPU: 없음(CPU 참조 구현만)
열화량의 각 수준에서 심볼을 trials 회 촬상·판독하고 시도 1회 = 1행의 표를 반환한다(table).
> 아래 상세 설명은 원문입니다 —— 요약과 제목은 번역되어 있습니다.
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 に掃引中の因子と同じ鍵、読み取り器を決められない表。
• 샘플 데이터 카탈로그(DL URL / 라이선스) —— 2-D 는 skimage.data(BSD/public)+ 합성, 3-D 는 실데이터 소스(Stanford/PDS 등)의 DL URL.
• 연산자의 내력·참고문헌 —— 이 연산자 족의 바탕이 된 연구/기법의 출처.
• 알고리즘의 정전(저자·연도)과 용도는 위의 패밀리 사용 가이드에 적혀 있습니다.
• 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
table 를 입력으로 받는 것)render_symbol · symbol_read_pod · ocr_classify · ocr_read_line · ocr_read_trials
read_pod)*Provenance: symbolpod.py — SYMBOL 연산자 레지스트리. 이 op 노트는 tools/opdocs.py md 가 자동 생성합니다(직접 편집하지 마세요).*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.