TL;DR — 사업자등록증 필드 추출에 쓰던 Tesseract OCR이 성능이 잘 안 나왔고, 이를 더 튜닝하는 비용보다 무료로 쓸 수 있는 외부 API(Gemini)로 바꾸는 게 낫다고 판단해 교체했다. 출력 형식을 JSON으로 지정하니 추출 정확도가 크게 올랐다.
Gemini Vision으로 교체(2026-02)하고, 출력 형식을 JSON으로 지정해 필드를 구조화된 형태로 직접 받았다 — 이 JSON 형식 지정이 정확도를 크게 끌어올렸다.
private static final String GEMINI_MODEL = "gemini-3.1-flash-lite-preview";
public BusinessRegistrationInfo extractBusinessRegistrationInfo(MultipartFile pdfFile) throws IOException {
// 1. PDF → 이미지(PDFBox) → base64
// 2. Gemini Vision 호출 (필드를 JSON 형식으로 추출하도록 지정)
String extractedJson = callGeminiVisionApi(base64Image);
// 3. JSON → BusinessRegistrationInfo
return parseJsonToBusinessRegistrationInfo(extractedJson);
}
extractJsonFromText()로 JSON만 정제 후 파싱(신뢰 경계)OcrService 코드 대폭 축소(개선 커밋에서 약 -90줄)