주요 인식 매개변수 중 하나는 인식 과정에서 사용되는 언어입니다. 분석과 인식을 수행하기 전에 올바른 언어를 설정하는 것이 중요합니다. 인식 언어는 IRecognizerParams::SetPredefinedTextLanguage 메서드를 사용해 쉽게 지정할 수 있습니다. 이 메서드는 IRecognizerParams::TextLanguage 속성에 영향을 줍니다. 기본적으로 이 매개변수는 영어 인식 언어로 초기화됩니다. 언어 자동 감지 기능도 사용할 수 있습니다(자세한 내용은 IRecognizerParams::LanguageDetectionMode 속성을 참조하세요).
아래에서는 ABBYY FineReader Engine에서 기본적으로 지원되는 언어와 인식 언어 작업을 위한 고급 기능을 제공하는 객체에 관한 유용한 정보를 확인할 수 있습니다.
ABBYY FineReader Engine은 기본적으로 지원되는 언어 집합을 제공합니다. 이러한 언어를 “사전 정의된 언어”라고 합니다. 사용 가능한 사전 정의된 언어 모음을 나타내는 PredefinedLanguages 객체는 Engine 객체의 PredefinedLanguages 속성을 통해 액세스할 수 있습니다. 이는 PredefinedLanguage 객체의 컬렉션입니다.
사전 정의된 언어는 내부 이름으로 식별됩니다. IRecognizerParams::SetPredefinedTextLanguage 메서드를 사용하면 해당 사전 정의된 언어의 이름으로 인식 언어를 직접 지정할 수 있습니다. 사전 정의된 언어의 내부 이름 목록은 Predefined Languages in ABBYY FineReader Engine을 참조하세요.
인식 중에 사용되는 언어는 TextLanguage 객체로 표현됩니다. 인식 매개 변수를 지정하는 RecognizerParams 객체에는 TextLanguage 객체에 대한 참조가 저장됩니다. 인식 함수는 이 객체를 입력 매개 변수로 전달되는 PageProcessingParams 객체의 하위 객체로 받거나, Layout 객체의 블록에서 가져옵니다.
TextLanguage 객체는 다음과 같은 주요 속성을 제공합니다:
- 내부 이름. 내부 언어에는 고유한 이름을 선택하는 것이 좋습니다. ABBYY FineReader Engine 배포판에 포함된 언어의 경우 이 이름은 이미 고유합니다. 새 언어의 이름도 반드시 고유하게 지정해야 합니다.
- 문자 집합. TextLanguage 객체에는 다음과 같은 문자 집합이 포함됩니다. 단어 사이에 나타날 수 있는 문장 부호, 사용이 금지된 문자, 그리고 단어의 바로 앞이나 뒤에 올 수 있는 추가 문장 부호입니다.
- 금지 사전. TextLanguage 객체의 ProhibitingDictionaries 속성을 사용해 금지 사전 컬렉션을 만들 수 있습니다. 이 사전에 포함된 단어는 인식된 단어의 후보로 사용할 수 없습니다. 하지만 후보가 더 이상 남아 있지 않고 금지된 단어를 사용하는 것만이 유일한 선택지인 경우에는, 이 사전의 단어가 인식 결과 텍스트에 여전히 나타날 수 있습니다. 사전 사용하기를 참조하십시오.
인식 중 텍스트는 단어로 분리되며, 각 단어에는 하나 이상의 인식 언어가 대응됩니다. 단어의 각 문자에는 하나의 인식 언어가 할당됩니다. 이 인식 언어는 BaseLanguage 객체로 표현되며 ITextLanguage::BaseLanguages 속성을 통해 액세스할 수 있습니다.
BaseLanguage 객체에는 다음과 같은 속성이 있습니다.
- 내부 이름. 내부 언어에는 고유한 이름을 선택하는 것이 좋습니다. ABBYY FineReader Engine 배포판에 포함된 언어에는 이미 고유한 이름이 지정되어 있습니다. 새 언어의 이름도 반드시 고유해야 합니다.
하나의 기본 인식 언어가 하나의 인식된 단어에 대응하는 경우, 인식 후 이 단어의 각 문자에 대한 ICharParams::LanguageName 속성은 기본 언어의 내부 이름으로 설정됩니다. 하나의 단어에 여러 기본 인식 언어가 대응하는 경우(예: 이중 언어 복합어)에는 이 단어의 문자에 대한 ICharParams::LanguageName 속성이 비어 있습니다. ICharParams::LanguageId 속성에는 인식된 단어와 관계없이 기본 언어의 식별자가 포함됩니다.
- 문자 집합. 문자 집합에는 해당 언어의 알파벳을 구성하는 문자, 확장 알파벳을 구성하는 문자(외래어에 사용됨), 단어 바로 앞뒤에 오는 문장 부호, 단어 안에는 허용되지만 내부 맞춤법 검사 시스템에서 무시되는 문자, 그리고 아래 첨자 및 위 첨자에서 허용되는 기호가 포함됩니다.
- 사전. 단어의 인식 언어에는 사전이 연결될 수 있습니다. 사전 사용하기를 참조하세요.
ABBYY FineReader Engine은 여러 개의 사전 정의된 인식 언어로 구성된 복합 인식 언어를 손쉽게 만들 수 있도록 지원합니다. 이는 LanguageDatabase 객체를 통해 수행됩니다. 예를 들어, 영어와 독일어 단어를 모두 포함하는 인식 언어를 만들 수 있습니다.
- IEngine::CreateLanguageDatabase 메서드를 호출하여 LanguageDatabase 객체를 만듭니다.
- 매개변수 “English,German”을 사용해 ILanguageDatabase::CreateCompoundTextLanguage 메서드를 호출합니다.
- 반환된 TextLanguage 객체를 텍스트 인식에 사용합니다.
Visual Components는 현재 Windows에서만 지원됩니다.
또한 LanguageDatabase 객체를 사용하면 Visual Components를 통해 Windows용 ABBYY FineReader Engine에서 만든 사용자 정의 언어를 가져올 수 있습니다. Visual Components는 사용자가 지정한 문자 집합, 사전 및 기타 매개변수를 사용해 사용자 정의 인식 언어를 만들 수 있도록 해줍니다. 이렇게 생성된 인식 언어는 여러 파일에 저장되며, LanguageDatabase 객체를 사용하여 액세스할 수 있습니다. Visual Components에서 만든 언어를 사용하려면 다음 단계를 수행합니다.
- IEngine::CreateLanguageDatabase 메서드를 호출하여 LanguageDatabase 객체를 만듭니다.
- ILanguageDatabase::LoadFrom 메서드를 사용하여 LanguageDatabase 객체에 언어를 로드합니다.
- LanguageDatabase 객체에서 필요한 언어를 이름으로 가져와 TextLanguage 객체로 얻습니다.
- 반환된 TextLanguage 객체를 텍스트 인식에 사용합니다.
사전 사용하기
공백이 포함된 단어 인식하기
중국어, 일본어 및 한국어 인식하기