이미지에서 텍스트 추출 (Java) - Aspose.OCR 및 GroupDocs.Parser 사용
Java 애플리케이션에서 이미지에서 텍스트 추출을 효율적으로 할 방법을 찾고 계신가요? 디지털 시대에 문서 사진을 검색 가능하고 편집 가능한 텍스트로 변환하는 것은 필수 기능입니다. 이 튜토리얼에서는 Aspose.OCR와 GroupDocs.Parser for Java를 함께 사용하는 전체 과정을 안내하여 스캔된 문서 텍스트를 신뢰성 있게 문자열로 변환할 수 있도록 합니다.
우리는 라이브러리 설정부터 특정 텍스트 영역 인식까지 모든 내용을 다루며, 이 통합이 빛을 발하는 실제 시나리오도 보여드립니다.
빠른 답변
- What library handles OCR? Aspose.OCR는 고정밀 광학 문자 인식을 제공합니다.
- Which component parses the result? GroupDocs.Parser는 OCR 출력에서 구조화된 데이터를 추출합니다.
- Minimum Java version? JDK 8 이상.
- Do I need a license? 테스트용 트라이얼을 사용할 수 있으며, 정식 라이선스로 모든 기능을 활성화할 수 있습니다.
- Can I process streams? 예—두 라이브러리 모두 웹 기반 업로드를 위한 이미지 스트림을 지원합니다.
“이미지에서 텍스트 추출”이란?
이미지에서 텍스트를 추출한다는 것은 시각적인 문자(예: 스캔된 페이지나 영수증 사진)를 코드가 조작·검색·저장할 수 있는 일반 텍스트로 변환하는 것을 의미합니다. OCR(Optical Character Recognition) 엔진은 픽셀 패턴을 분석하고 글리프를 인식하여 Unicode 문자열을 출력합니다.
왜 Aspose.OCR와 GroupDocs.Parser를 결합하나요?
- Accuracy: Aspose.OCR는 업계 최고의 인식률을 제공합니다.
- Flexibility: GroupDocs.Parser는 OCR 출력 처리, 페이지 레이아웃 감지, 표나 양식 필드와 같은 구조화된 결과 반환을 지원합니다.
- Stream‑friendly: 두 라이브러리 모두
InputStream을 직접 다루어 이미지 업로드를 받는 웹 서비스에 적합합니다.
사전 요구 사항
- Java Development Kit: JDK 8 이상이 설치되어 있어야 합니다.
- Maven: 권장 빌드 도구(또는 수동 JAR 관리).
- Aspose OCR Library: 프로젝트에 JAR를 추가합니다.
- GroupDocs.Parser for Java: Maven을 통해 포함(아래 참고)하거나 JAR를 다운로드합니다.
- Basic Java knowledge: 스트림, 예외, 컬렉션 처리에 대한 기본 지식.
GroupDocs.Parser for Java 설정
Maven 설정
레포지토리와 의존성을 pom.xml에 추가합니다:
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/parser/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-parser</artifactId>
<version>25.5</version>
</dependency>
</dependencies>
직접 다운로드
Maven을 사용하고 싶지 않다면, 최신 JAR를 GroupDocs Releases에서 다운로드하십시오.
라이선스 획득
유효한 라이선스는 Aspose OCR와 GroupDocs.Parser 모두의 전체 기능을 활성화합니다. 무료 체험으로 시작하거나 공급업체 웹사이트에서 영구 라이선스를 구매할 수 있습니다.
기본 초기화 및 설정
- Aspose OCR 라이선스 설정:
import com.aspose.ocr.License; // Initialize and set the Aspose OCR license License license = new License(); license.setLicense("YOUR_LICENSE_PATH/AsposeOcrLicensePath"); - Initialize GroupDocs.Parser: 파서 JAR가 클래스패스에 있는지 확인하십시오; 기본 사용을 위해 추가 코드가 필요하지 않습니다.
구현 가이드
기능: 이미지 스트림에서 텍스트 인식
이 메서드는 InputStream(예: 업로드된 파일)을 OCR 엔진에 직접 전달하여 인식된 텍스트를 받을 수 있게 합니다.
개요
이 과정은 들어오는 스트림을 BufferedImage로 변환하고, 선택적인 인식 영역을 설정한 뒤 Aspose OCR의 RecognizePage 메서드를 호출합니다.
단계별 코드
- AsposeOCR 인스턴스를 생성합니다:
import com.aspose.ocr.AsposeOCR; AsposeOCR api = new AsposeOCR(); - 이미지 스트림을 BufferedImage로 읽어들입니다:
import java.awt.image.BufferedImage; import javax.imageio.ImageIO; BufferedImage image = ImageIO.read(imageStream); - 인식 설정을 구성합니다 (선택적 영역 선택):
import com.aspose.ocr.RecognitionSettings; RecognitionSettings settings = new RecognitionSettings(); // Example: limit OCR to a specific rectangle if (options != null && options.getRectangle() != null) { ArrayList<Rectangle> areas = new ArrayList<>(); areas.add(new Rectangle( (int) options.getRectangle().getLeft(), (int) options.getRectangle().getTop(), (int) options.getRectangle().getSize().getWidth(), (int) options.getRectangle().getSize().getHeight())); settings.setRecognitionAreas(areas); } - 인식을 실행하고 경고를 처리합니다:
import com.aspose.ocr.RecognitionResult; RecognitionResult result = api.RecognizePage(image, settings); if (options != null && options.getHandler() != null) { options.getHandler().onWarnings(pageIndex, result.warnings); } return result.recognitionText;
기능: 이미지 스트림에서 텍스트 영역 인식
각 텍스트 블록(예: 양식의 개별 필드)이 필요할 때는 영역 감지를 활성화합니다.
개요
detectAreas 설정은 Aspose OCR에게 인식된 각 스니펫에 대한 경계 사각형을 반환하도록 지시하며, 이를 데이터 모델에 매핑할 수 있습니다.
단계별 코드
- 영역 감지를 활성화합니다:
RecognitionSettings settings = new RecognitionSettings(); settings.setDetectAreas(true); - (선택 사항) 특정 영역 정의 – 이미지의 특정 부분만 필요하면 이전 섹션의 사각형 로직을 재사용하십시오.
- OCR을 실행하고 영역 정보를 수집합니다:
import java.awt.Rectangle; import java.util.ArrayList; ArrayList<PageTextArea> areas = new ArrayList<>(); for (int i = 0; i < result.recognitionAreasRectangles.size(); i++) { Rectangle rect = result.recognitionAreasRectangles.get(i); String text = result.recognitionText; areas.add(new PageTextArea( text, new Page(pageIndex, pageSize), new Rectangle( new Point(rect.getX(), rect.getY()), new Size(rect.getWidth(), rect.getHeight())))); } return areas;
실용적인 적용 사례
- Document Management Systems: 스캔된 PDF를 색인화하여 사용자가 전체 텍스트를 검색할 수 있게 합니다.
- Automated Data Entry: 사진으로 촬영한 영수증이나 양식에서 필드를 추출합니다.
- Content Digitization: 인쇄된 책이나 매뉴얼을 검색 가능한 전자책으로 변환합니다.
성능 고려 사항
- Batch Processing: 이미지들을 배치로 묶어 JVM 오버헤드를 줄입니다.
- Image Quality: 높은 DPI(300 dpi 이상)는 정확도를 크게 향상시킵니다.
- Memory Management: 특히 대량 처리 시
BufferedImage객체를 즉시 해제합니다.
일반적인 문제 및 해결 방법
| 증상 | 가능한 원인 | 해결책 |
|---|---|---|
| 글자가 깨짐 | 저해상도 이미지 | 고해상도 스캔 사용(≥300 dpi) |
| 텍스트 없음 | 잘못된 이미지 형식(예: CMYK) | OCR 전에 RGB로 변환 |
| 메모리 부족 오류 | 매우 큰 이미지 | 작은 타일로 처리하거나 힙 크기 증가 |
자주 묻는 질문
Q: Maven 프로젝트에 Aspose OCR을 어떻게 설치합니까?
A: pom.xml에 Aspose OCR 의존성을 추가(공급업체 Maven 레포지토리 참고)하거나 Aspose 웹사이트에서 JAR를 다운로드하여 클래스패스에 배치합니다.
Q: 다중 페이지 PDF에서 텍스트를 추출할 수 있나요?
A: 예. 각 PDF 페이지를 이미지로 변환(예: Aspose.PDF 사용)한 뒤 위에서 설명한 OCR 메서드에 스트림을 전달합니다.
Q: 이 접근 방식이 손글씨에도 적용되나요?
A: Aspose OCR은 주로 인쇄된 텍스트를 대상으로 합니다. 손글씨의 경우 전용 손글씨 인식 서비스를 고려하십시오.
Q: 프로덕션 사용에 라이선스가 필요합니까?
A: 평가용 트라이얼 라이선스로 테스트할 수 있지만, 정식 라이선스를 사용하면 워터마크가 제거되고 상업적 배포를 위한 모든 기능이 활성화됩니다.
Q: 특정 언어에 대한 정확도를 어떻게 높일 수 있나요?
A: RecognitionSettings에서 언어를 설정(e.g., settings.setLanguage(Language.Spanish);)하면 엔진이 해당 언어에 최적화됩니다.
결론
Aspose.OCR의 강력한 인식 엔진과 GroupDocs.Parser의 유연한 파싱 기능을 결합함으로써 이제 이미지에서 텍스트 추출 파일과 스캔된 문서 텍스트를 구조화된 데이터로 변환하는 견고한 솔루션을 갖게 되었습니다. 설정을 실험하고 코드를 서비스 레이어에 통합하면 문서 워크플로우가 완전히 검색 가능하고 자동화되는 모습을 확인할 수 있습니다.
마지막 업데이트: 2026-01-29
테스트 환경: Aspose.OCR 23.12, GroupDocs.Parser 25.5
작성자: Aspose