GroupDocs.Search for Java를 사용한 문자 인식을 활용한 인덱스 생성 방법

현대의 문서 중심 애플리케이션에서는 인덱스 생성 방법이 텍스트의 뉘앙스—예: 하이픈, 언더스코어, 언어별 기호—를 고려하도록 하는 것이 빠르고 정확한 검색을 위해 필수적입니다. 이 튜토리얼에서는 GroupDocs.Search for Java에서 문자 인식을 구성하는 방법을 살펴보며, 일반 문자(문자, 숫자, 언더스코어)와 혼합 문자(예: 하이픈)를 모두 다룹니다. 최종적으로 OCR 또는 이미지 검색 시나리오에 맞는 인덱스를 맞춤 설정할 수 있게 되며, 법률 사건 번호, 소스 코드 저장소, 다국어 PDF 등을 인덱싱할 수 있습니다.

빠른 답변

  • “create custom search index”가 무엇을 의미하나요? 특정 기호를 무시하지 않고 문자 또는 혼합 문자로 취급하도록 인덱스를 구성하는 것을 의미합니다.
  • 어떤 라이브러리를 사용하나요? GroupDocs.Search for Java (작성 시점 v25.4).
  • 라이선스가 필요합니까? 개발에는 무료 체험판으로 충분하고, 운영 환경에서는 유료 라이선스가 필요합니다.
  • PDF와 이미지 모두를 인덱싱할 수 있나요? 예—적절히 구성하면 GroupDocs.Search가 이미지와 PDF에 대한 OCR을 지원합니다.
  • Maven이 필요합니까? Maven이 의존성 관리에 권장되지만 Gradle나 수동 JAR도 사용할 수 있습니다.

커스텀 검색 인덱스란?

커스텀 검색 인덱스를 사용하면 검색 엔진이 문자를 해석하는 방식을 정의할 수 있습니다. 기본적으로 많은 기호가 무시되며, 이로 인해 사건 번호(2023-AB-456)나 코드 스니펫(my_variable)과 같은 항목이 매치되지 않을 수 있습니다. 알파벳 사전을 조정하면 엔진이 검색 가능한 텍스트로 간주하는 것을 완전히 제어할 수 있습니다.

왜 법률 사건 번호에 대해 일반 문자와 혼합 문자를 구성해야 할까요?

  • 일반 문자(문자, 숫자, 언더스코어)는 별도로 토큰화되어 식별자에 대한 정확히 일치하는 검색을 가능하게 합니다.
  • 혼합 문자(하이픈, 슬래시)는 관련 토큰을 함께 유지하여 사건 번호, 제품 코드, 파일 경로 등이 원치 않게 분리되는 것을 방지합니다.
  • 이 구성은 토큰 파편화를 줄이고 OCR 생성 콘텐츠에 대한 관련성을 높여 검색 인덱스 성능을 최적화합니다.

사전 요구 사항

  • JDK 8 이상이 설치되어 있어야 합니다.
  • Maven을 사용한 의존성 관리.
  • GroupDocs.Search for Java 라이브러리에 접근( Maven 또는 공식 사이트를 통해 다운로드).

필요한 라이브러리 및 의존성

pom.xml에 저장소와 의존성 항목을 추가합니다(아래 예시와 같이). XML 블록은 그대로 유지해야 합니다.

<repositories>
   <repository>
      <id>repository.groupdocs.com</id>
      <name>GroupDocs Repository</name>
      <url>https://releases.groupdocs.com/search/java/</url>
   </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.groupdocs</groupId>
      <artifactId>groupdocs-search</artifactId>
      <version>25.4</version>
   </dependency>
</dependencies>

최신 JAR 파일은 GroupDocs.Search for Java 릴리스에서도 다운로드할 수 있습니다.

라이선스 획득

  • 무료 체험 – 초기 실험에 적합합니다.
  • 임시 라이선스 – 장기 개발 주기에 유용합니다.
  • 프로덕션 라이선스 – 상업적 배포에 필요합니다.

공식 포털에서 라이선스를 받으세요: GroupDocs.

기본 초기화

아래 스니펫은 빈 인덱스를 시작하는 최소 코드 예시입니다. 그대로 유지하고, 이후에 확장합니다.

import com.groupdocs.search.*;

public class GroupDocsSearchSetup {
    public static void main(String[] args) {
        String indexFolder = "YOUR_OUTPUT_DIRECTORY";
        String documentFolder = "YOUR_DOCUMENT_DIRECTORY";

        Index index = new Index(indexFolder);
        
        System.out.println("GroupDocs.Search setup completed!");
    }
}

GroupDocs.Search for Java 설정

Maven을 통한 설치

Prerequisites 섹션의 Maven 설정만 있으면 됩니다. 추가 후 mvn clean install을 실행하여 바이너리를 가져옵니다.

환경 설정 요구 사항

  • 인덱스 폴더문서 폴더가 디스크에 존재하는지 확인합니다.
  • 절대 경로를 사용하거나 IDE가 상대 경로를 올바르게 해석하도록 설정합니다.

구현 가이드

아래에서는 두 가지 별도 기능인 일반 문자혼합 문자를 단계별로 살펴봅니다. 각 기능은 동일한 흐름을 따릅니다—경로 정의, 인덱스 생성, 문자 사전 설정, 마지막으로 문서 인덱싱.

기능 1 – 일반 문자

개요

일반 문자는 독립 토큰으로 취급됩니다. 숫자, 문자, 언더스코어를 그대로 검색 가능하도록 할 때 이상적입니다.

단계별 구현

1️⃣ 경로 설정
인덱스가 저장될 위치와 원본 문서가 있는 위치를 정의합니다.

String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Indexing/CharacterTypes/RegularCharacters";
String documentFolder = "YOUR_DOCUMENT_DIRECTORY";

2️⃣ 인덱스 생성 및 구성
인덱스를 인스턴스화하고 기존 알파벳 구성을 초기화합니다.

Index index = new Index(indexFolder);
index.getDictionaries().getAlphabet().clear();

3️⃣ 일반 문자 정의
숫자, 라틴 문자, 언더스코어를 포함하는 문자 배열을 만듭니다.

StringBuilder sb = new StringBuilder();
for (char i = 0x0030; i <= 0x0039; i++) { // Digits
    sb.append(i);
}
for (char i = 0x0041; i <= 0x005A; i++) { // Latin capital letters
    sb.append(i);
}
sb.append(0x005F); // Underscore
for (char i = 0x0061; i <= 0x007A; i++) { // Latin small letters
    sb.append(i);
}

// Convert to character array and set as alphabet range
char[] characters = new char[sb.length()];
sb.getChars(0, sb.length(), characters, 0);
index.getDictionaries().getAlphabet().setRange(characters, CharacterType.Letter);

4️⃣ 문서 인덱싱
원본 폴더의 모든 파일을 새로 구성한 인덱스에 추가합니다.

index.add(documentFolder);

기능 2 – 혼합 문자

개요

혼합 문자(예: 하이픈)는 두 단어를 연결하는 경우가 많습니다. 이를 혼합으로 표시하면 인덱싱 시 엔진이 주변 토큰을 함께 유지합니다.

단계별 구현

1️⃣ 경로 설정

String indexFolder = "YOUR_OUTPUT_DIRECTORY/AdvancedUsage/Indexing/CharacterTypes/BlendedCharacters";
String documentFolder = "YOUR_DOCUMENT_DIRECTORY";

2️⃣ 인덱스 생성 및 구성

Index index = new Index(indexFolder);

3️⃣ 혼합 문자 정의
여기서는 하이픈을 혼합 문자로 처리하도록 사전에 지정합니다.

index.getDictionaries().getAlphabet().setRange(new char[] { '-' }, CharacterType.Blended);

4️⃣ 문서 인덱싱

index.add(documentFolder);

실용적인 적용 사례

사용 사례 1 – 법률 문서 관리

법률 파일에는 종종 2023-AB-456와 같은 사건 번호가 포함됩니다. 언더스코어와 하이픈을 구성하면 식별자가 분리되지 않아 정확히 일치하는 결과를 반환하므로 법률 사건 번호 검색을 효율적으로 수행할 수 있습니다.

사용 사례 2 – 소스 코드 저장소

개발자는 언더스코어(my_variable)와 하이픈(my-function)이 의미 있는 코드 스니펫을 검색해야 합니다. 커스텀 문자 인식을 통해 검색 엔진이 이러한 기호를 올바르게 인식합니다.

사용 사례 3 – 다국어 데이터셋

추가 알파벳을 사용하는 언어를 다룰 때는 해당 범위를 포함하도록 Unicode 문자 집합을 확장하여 다국어 간 정확한 검색 결과를 보장할 수 있습니다.

사용 사례 4 – PDF 이미지 인덱싱

스캔한 PDF나 이미지 파일을 인덱싱할 경우 OCR 출력에 혼합 문자가 포함되는 경우가 많습니다. 일반 문자와 혼합 문자를 적절히 구성하면 이미지 기반 콘텐츠에 대한 검색 인덱스 성능이 최적화됩니다.

성능 고려 사항

  • 리소스 관리 – 힙 사용량을 모니터링하고, 큰 인덱스는 점진적 커밋을 활용합니다.
  • 가비지 컬렉션 – 작업이 끝난 Index 객체를 해제하여 JVM이 메모리를 회수하도록 합니다.
  • 인덱스 최적화 – 정기적으로 index.optimize()(가능한 경우)를 호출해 인덱스를 압축하고 쿼리 속도를 향상시킵니다.

결론

이제 GroupDocs.Search for Java를 사용해 일반 문자와 혼합 문자를 구분하는 인덱스 생성 방법을 알게 되었습니다. 이러한 세밀한 제어를 통해 법률, 개발, 다국어 환경에 맞춘 OCR 인식 고성능 검색 솔루션을 구축할 수 있습니다.

다음 단계

  • 라틴 문자 외의 알파벳에 대한 추가 Unicode 범위를 실험해 보세요.
  • 문자 구성과 함께 형태소 분석이나 동의어와 같은 다른 GroupDocs.Search 기능을 결합합니다.
  • 인덱스를 REST API에 통합해 프런트엔드 애플리케이션에 검색 기능을 제공합니다.

자주 묻는 질문

Q: CharacterType.Letter의 목적은 무엇인가요?
A: 제공된 문자를 일반 문자로 취급하도록 인덱스에 알려주며, 인덱싱 시 별도로 토큰화됩니다.

Q: 같은 인덱스에서 일반 문자와 혼합 문자를 혼합할 수 있나요?
A: 예—각 유형에 대해 setRange를 호출하면 사전이 두 구성을 동시에 처리합니다.

Q: 알파벳을 변경한 후 인덱스를 재구축해야 하나요?
A: 반드시 필요합니다. 문자 사전 변경은 토큰화에 영향을 미치므로 새로운 규칙을 적용하려면 문서를 다시 인덱싱해야 합니다.

Q: 정의할 수 있는 커스텀 문자 수에 제한이 있나요?
A: 라이브러리는 전체 Unicode 범위를 지원하지만, 매우 많은 문자를 추가하면 성능이 저하될 수 있으므로 실제 필요한 문자만 정의하세요.

Q: 이 설정이 OCR 정확도에 어떤 영향을 미치나요?
A: 인덱스의 문자 집합을 OCR 엔진 출력과 맞추면 false negative를 줄이고 전체 검색 관련성을 향상시킵니다.


마지막 업데이트: 2026-03-17
테스트 환경: GroupDocs.Search 25.4 for Java
작성자: GroupDocs