Docs
OCR API
# Botari OCR API
이 문서는 AI 앱 제작자가 OCR 기능만 빠르게 찾도록 만든 짧은 공개 문서입니다.
전체 API Guide: `https://botari.net/docs/api-guide.md`
## 공식 SDK
- `BotariSDK.extractTextFromImage(payload)`
- `BotariSDK.createOcrJob(payload)`
- `BotariSDK.getOcrJob(jobId)`
- `BotariSDK.normalizeLabelOcr({ text, lines, product_id? })`
## REST 엔드포인트
- `POST /wp-json/botari/v1/ocr/image`
- 이미지 OCR 작업 등록
- 응답: `202`, `{ success, queued, job_id, status, status_url }`
- `GET /wp-json/botari/v1/ocr/jobs/{job_id}`
- OCR 작업 상태/결과 조회
- 완료 응답: `{ success, job_id, status:"completed", engine, lang, text, lines, quality, label_ocr? }`
- `POST /wp-json/botari/v1/ocr/normalize-label`
- Gemini 우선 OCR 경로가 아닌 기존 OCR 결과 `text`/`lines`를 Gemini가 식품 라벨용 JSON으로 정리
- 응답: `{ success, clean_text, fields, corrections, confidence }`
## 이미지 OCR 예시
```js
const result = await BotariSDK.extractTextFromImage({
image_base64: imageBase64,
mime: 'image/png',
timeout_ms: 120000,
poll_interval_ms: 1500
});
console.log(result.text);
console.log(result.lines);
```
## 식품 라벨 OCR + Gemini 동시 정리 예시
이 방식은 `extractTextFromImage()`가 Gemini로 이미지 OCR과 식품 라벨 JSON 정리를 한 번에 시도합니다. Gemini가 실패해 PaddleOCR로 fallback된 경우에만 SDK가 `normalize-label`을 추가 호출합니다. 이 결과를 받은 뒤 같은 `text`/`lines`로 `BotariSDK.normalizeLabelOcr()`를 다시 호출하지 마세요.
```js
const result = await BotariSDK.extractTextFromImage({
image_base64: imageBase64,
mime: 'image/jpeg',
timeout_ms: 120000,
poll_interval_ms: 1500,
normalize_label_ocr: true
});
console.log(result.clean_text);
console.log(result.fields);
```
## 이미 OCR 결과가 있는 경우
이 방식은 이미 별도로 받은 OCR 결과를 수동으로 정리할 때만 사용합니다. 위의 `normalize_label_ocr: true` 자동 방식과 동시에 쓰면 같은 라벨을 두 번 정리하게 됩니다.
```js
const normalized = await BotariSDK.normalizeLabelOcr({
text: ocr.text,
lines: ocr.lines
});
console.log(normalized.fields.ingredients);
console.log(normalized.fields.storage);
```
## 제한
- 로그인 사용자만 사용 가능
- jpg/png/webp 지원
- 이미지 3MB 이하
- OCR 원본 이미지는 처리 완료/실패 후 서버에서 삭제
- 완료/실패 결과는 24시간 뒤 정리
- Gemini OCR/라벨 정리는 자동 보정/병합 도구이며 최종 표기는 사용자가 확인해야 함