HandwritingInput
필기 � 력 캔버스 통합 — DigitalInk + RecognitionBridge + BrushConfiguration 조립
상태
| 항목 | 값 |
|---|---|
| Layer | composite |
| Tier | L1 |
| Status | wip |
| Version | 0.9.0 |
| 가격 | Free (free) |
| **카� | |
| �고리** | Input & UX |
개요
개요
HandwritingInput 은 multi-saas-kit 의 Layer 2 Composite Plugin � 니다. 3개 base plugin 을 조립한 첫 Composite 으로, 캔버스 stroke � 력 → provider 인식 호출 → 정규화된 결과 반환을 단일 진� 점으로 제공합니다.
의존 base plugins (3�
)
| Plugin | 역할 | Layer |
|---|---|---|
| DigitalInk | stroke 표준 + 검증 (StrokeData, StrokeNormalizer) | L0 Foundation |
| BrushConfiguration | 캔버스 / brush 렌더 설정 (BrushDefaults, BrushConfigNormalizer) | L0 Foundation |
| RecognitionBridge | 인식 API 어댑터 (RecognizerInterface, HandWriterRecognizer, GoogleInputToolsRecognizer, RecognizerChain) | L1 Core |
핵심 컴포 넌트
HandwritingInputService
단일 진�
점 process() — 다음 5단계 흐름을 캡슐화:
1. StrokeData::fromArray($payload) ← DigitalInk 검증
2. (선택) StrokeNormalizer 정규화 round-trip ← 좌표 클린�
3. RecognizerInterface::recognize ← RecognitionBridge
4. (선택) BrushConfigNormalizer::normalize ← brush 메타 첨부
5. (선택) StrokeNormalizer::boundingBox ← 필기 영역 메타
→ HandwritingInputResult
HandwritingInputResult (DTO)
{
ok, provider, elapsed_ms, candidates, message,
canvas: { width, height },
brush: { line_width, stroke_color, ... }, // include_brush=true 시
bounding_box: { min_x, max_x, width, ... } // include_bounding=true 시
}
설정 (config/handwriting-input.php)
return [
'enabled' => env('PLG_HANDWRITING_INPUT_ENABLED', true),
'flow' => [
'normalize_strokes' => false, // true 면 0~1 정규화 후 다시 환산 (provider 호환)
'include_brush' => true, // 결과에 brush config 포함
'include_bounding' => true, // 결과에 bounding box 포함
],
];