--- language: - ko - en library_name: scikit-learn license: other tags: - handwriting - mathematical-expression-recognition - online-handwriting - segmentation - research --- # AIFlow Math Ink 0.6 — Intermediate Research Snapshot 이 저장소는 AIFlow Math Ink 0.6의 **중간 R-track 연구 스냅샷**이다. 전체 LaTeX OCR 또는 상용 ODA 모델이 아니며, 수식 stroke grouping과 행동 문맥 실험의 재현 자료를 보존한다. ## 이번 스냅샷의 결론 - protected multi-stroke family selector 기준 CROHME official test exact partition: **60.04%** - boundary behavior guard 적용 exact partition: **60.25%** - pair-F1: **91.07% → 91.26%** - overmerge formula rate: **21.72% → 20.49%** - validation에서 고정한 boundary 설정: probability threshold `0.5`, logit penalty weight `6.0` - 전체 로컬 Python 회귀: **271 passed** Boundary head는 grouping 전에 다획 후보가 둘 이상의 정답 기호 경계를 침범하는지 예측한다. 규칙형 component competition과 이미 grouping된 partition 이후의 local-baseline relation guard는 채택되지 않았다. ## 디렉터리 - `artifacts/`: scikit-learn boundary 연구 head - `reports/`: validation/test 지표와 실패 감사 - `scripts/`: 학습·sweep·감사 entry point - `src/`: 이번 실험에 직접 관련된 selector/관계 코드 snapshot ## 사용 제한 이 스냅샷은 **연구 전용**이다. - `boundary_behavior_guard.joblib`은 CROHME 정답 grouping으로 학습된 R-track 산출물이다. - 상용 제품, 배포 checkpoint, teacher 또는 distillation 입력으로 사용하지 않는다. - CROHME/HWRT 원본 데이터, 필기 표본, OCR cache는 이 저장소에 포함하지 않는다. - 상용 전환은 동일 boundary target을 상용 허용 P-track 연속식 데이터로 다시 학습해야 한다. - 개별 외부 데이터셋의 원 라이선스와 사용 조건은 사용자가 별도로 확인해야 한다. ## 보안 주의 `joblib`/pickle 계열 파일은 임의 코드를 실행할 수 있다. 이 저장소와 파일 checksum을 신뢰하는 환경에서만 로드한다. ```python import joblib payload = joblib.load("artifacts/boundary_behavior_guard.joblib") print(payload["schema"]) print(payload["feature_names"]) print(payload["threshold"], payload["weight"]) ``` ## 재현 경계 포함된 script는 전체 AIFlow 프로젝트와 사용자가 별도로 확보한 데이터셋이 있어야 완전 실행된다. 공식 test는 validation 선택에 사용하지 않았지만, 반복 연구 과정에서 test 실패를 관찰했으므로 여기에 기록된 결과는 독립 제품 인증 수치가 아니다. 자세한 설계·실패 분석·후속 P-track 계획은 `reports/RESEARCH_REPORT.md`를 참고한다.