빠른 OCR은 `auto`, `en`, `de`, `es`, `fr`, `zh`, `ja`를 지원하지만 한국어(`ko`)는 지원하지 않습니다. 한국어에는 정확한 OCR 팩과 `balanced` 또는 `best`가 필요합니다. 이 팩은 공식 Linux amd64 및 arm64 컨테이너에서 작동하며 NVIDIA 호스트에서도 OCR은 CPU에서 실행됩니다. 지원되지 않는 시스템은 명시적인 호환성 오류를 반환하며 조용히 `fast`로 대체하지 않습니다. 한국어에 `fast` 또는 이전 `tesseract` 별칭을 지정하면 큐에 넣기 전에 `FEATURE_INCOMPATIBLE` 및 `fast-korean-unsupported`로 거부됩니다.
**처리:** OCR은 항상 비동기로 실행됩니다. 유효성 검사와 대기열 등록이 끝나면 엔드포인트는 `jobId`와 함께 즉시 `202 Accepted`를 반환합니다. 작업의 SSE 진행 스트림을 최종 `complete` 또는 `failed` 이벤트까지 추적하세요. 성공 이벤트의 `result`에는 OCR 필드가 포함됩니다.
| file | file | 예 | - | 이미지 파일(멀티파트), 최대 512 MiB 인코딩 및 40 메가픽셀 디코딩; 더 낮은 운영자 업로드 제한이 여전히 적용됩니다. |
| quality | string | 아니요 | 동적 | 품질 등급: `fast`(Tesseract), `balanced`(소형 PP-OCRv6 모델이 포함된 RapidOCR) 또는 `best`(보정된 변형 스코어링이 포함된 정확도가 높은 중간 PP-OCRv6 모델) |
| enhance | boolean | 아니요 | 계층에 따라 다름 | 인식 전 로컬 대비를 향상시킵니다. 빠르게 직접 적용합니다. 균형 및 최상은 보정된 점수로 결과가 향상되는 경우에만 변형을 유지합니다. `best`의 경우 기본값은 `true`이고 `fast`/`balanced`의 경우 `false`입니다. |
| engine | string | 아니요 | - | 더 이상 사용되지 않는 호환성 별칭입니다. 대신 `quality`를 사용하세요. `tesseract`는 `fast`에 매핑됩니다. 레거시 `paddleocr` 값은 `balanced`에 매핑되지만 PaddlePaddle 를 로드하지 않습니다. |
`quality`와 `engine`을 생략하면 SnapOtter는 `best`, `balanced`, `fast` 순으로 사용 가능한 최상위 등급을 선택합니다. 한국어에서는 `fast`를 선택하지 않으며 `best`, 그다음 `balanced`를 사용하고, 둘 다 없으면 정확한 런타임의 설치 또는 호환성 오류를 반환합니다.
`202` 응답에서 반환된 `jobId`(또는 제공한 `clientJobId`)를 사용해 `GET /api/v1/jobs/{jobId}/progress`에 연결합니다. 최종 `complete` 또는 `failed` 이벤트까지 스트림을 열어 두세요. 성공한 최종 프레임의 `result`에는 OCR 출력이 포함됩니다.
- 지원되는 SnapOtter 이미지에서는 `fast`를 항상 사용할 수 있습니다. `balanced`와 `best`에는 선택 사항인 고정확도 OCR 팩이 필요합니다.
- 내장 Tesseract는 공식 이미지에 약 25 MiB를 추가합니다. 고정확도 팩은 이미지에 포함되지 않고 `/data/ai`에 저장됩니다.
- 고정확도 팩은 공식 Linux amd64 및 arm64 컨테이너용으로 배포됩니다. NVIDIA 호스트에서도 ONNX Runtime의 CPU 공급자를 사용하므로 CUDA 라이브러리나 GPU 호환성에 의존하지 않습니다. 소스 및 사전 빌드된 bare-metal 설치에서는 자체 호환 런타임을 제공하지 않는 한 Fast OCR를 사용합니다.
- 성공한 최종 `result`에는 `text`의 추출된 텍스트와 `downloadUrl`의 다운로드 가능한 `.txt` 아티팩트가 모두 포함됩니다.
- SnapOtter 는 명시적으로 요청된 계층을 존중합니다. `balanced` 또는 `best`를 사용할 수 없는 경우 API 는 `FEATURE_NOT_INSTALLED` 또는 `FEATURE_INCOMPATIBLE`와 함께 `501`를 반환합니다. 요청을 다른 계층으로 자동으로 다운그레이드하지 않습니다.
- 성공적인 빈 결과는 빈 결과로 유지됩니다. 런타임 실패는 낮은 품질의 엔진으로 다시 시도하는 대신 오류를 반환합니다.
- 성공한 최종 `result`는 `requestedQuality` 및 `actualQuality`와 엔진, 장치, 공급자, 런타임 및 모델 버전과 모든 경고를 보고합니다.