이 시나리오를 사용하면 문서 본문의 텍스트는 물론 로고, 인장, 기타 본문 이외의 요소에 포함된 텍스트도 추출할 수 있습니다.텍스트의 자연스러운 순서, 즉 “사람이 읽는 방식”이 그대로 유지됩니다. 그런 다음 문서를 사용자 측 자연어 처리(NLP) 엔진에 전달하여, 예를 들어 빠르게 요약하거나 민감한 정보를 검색하거나 감성 분석을 수행할 수 있습니다.문서의 본문 텍스트를 추출하기 위해, 일반적으로 스캔하거나 전자 형식으로 저장한 이미지 파일은 여러 처리 단계를 거치며 각 단계마다 고유한 특성이 있습니다.
스캔한 이미지 또는 사진 전처리
스캔한 이미지는 인식 전에 일부 전처리가 필요할 수 있습니다. 예를 들어 스캔한 문서에 배경 잡음, 기울어진 텍스트, 반전된 색상, 검은 여백, 잘못된 방향 또는 해상도 문제가 있는 경우입니다.
문서 이미지에서 최대한 많은 텍스트 인식
이미지 인식은 문서 이미지에서 가능한 모든 텍스트를 찾아 추출할 수 있도록 하는 설정으로 수행됩니다.
아래에는 이 시나리오에서 ABBYY FineReader Engine 12를 사용하는 권장 방법에 대한 자세한 설명이 나와 있습니다. 이 방법은 이 시나리오에 가장 적합한 처리 설정을 사용합니다.
1단계. ABBYY FineReader Engine 불러오기
ABBYY FineReader Engine 작업을 시작하려면 Engine 객체를 생성해야 합니다. Engine 객체는 ABBYY FineReader Engine 객체 계층 구조의 최상위 객체로, 다양한 전역 설정과 일부 처리 메서드, 그리고 다른 객체를 생성하는 메서드를 제공합니다.엔진 객체를 생성하려면 InitializeEngine 함수를 사용하십시오. 엔진 객체를 로드하는 다른 방법도 참조하세요(Win).
// FREngine.dll 경로, FineReader Engine Customer Project ID,// 그리고 해당하는 경우 Online License 토큰 경로와 Online License 비밀번호로 이 변수들을 초기화하세요wchar_t* FreDllPath;wchar_t* CustomerProjectId;wchar_t* LicensePath; // Online License를 사용하지 않는 경우, 이 변수들에 빈 문자열을 할당하세요wchar_t* LicensePassword;// FREngine.dll에 대한 HANDLEstatic HMODULE libraryHandle = 0;// 전역 FineReader Engine 객체FREngine::IEnginePtr Engine;void LoadFREngine(){ if( Engine != 0 ) { // 이미 로드됨 return; } // 1단계: FREngine.dll 로드 if( libraryHandle == 0 ) { libraryHandle = LoadLibraryEx( FreDllPath, 0, LOAD_WITH_ALTERED_SEARCH_PATH ); if( libraryHandle == 0 ) { throw L"ABBYY FineReader Engine 로드 중 오류 발생"; } } // 2단계: 엔진 객체 가져오기 typedef HRESULT ( STDAPICALLTYPE* InitializeEngineFunc )( BSTR, BSTR, BSTR, BSTR, BSTR, VARIANT_BOOL, FREngine::IEngine** ); InitializeEngineFunc pInitializeEngine = ( InitializeEngineFunc )GetProcAddress( libraryHandle, "InitializeEngine" ); if( pInitializeEngine == 0 || pInitializeEngine( CustomerProjectId, LicensePath, LicensePassword, L"", L"", VARIANT_FALSE, &Engine ) != S_OK ) { UnloadFREngine(); throw L"ABBYY FineReader Engine 로드 중 오류 발생"; }}
2단계. 시나리오용 설정 로드
이 시나리오에 가장 적합한 설정은 ABBYY FineReader Engine의 Engine 객체에서 LoadPredefinedProfile 메서드를 사용해 선택할 수 있습니다. 이 메서드는 입력 매개변수로 프로필 이름을 받습니다. 자세한 내용은 프로필 작업을 참조하세요.ABBYY FineReader Engine은 이 시나리오에 대해 2가지 설정 옵션을 지원합니다:
프로필 이름
설명
TextExtraction_Accuracy
이 설정은 정확도에 맞게 최적화되어 있습니다:
품질이 낮은 작은 텍스트 영역을 포함해 이미지의 모든 텍스트를 감지합니다(그림과 표는 감지되지 않음).
문서의 논리 구조를 완전히 합성하지는 않습니다.
이 프로필은 문서를 RTF, DOCX 또는 텍스트 전용 PDF로 변환하는 용도가 아닙니다. 이러한 경우에는 문서 변환 프로필을 사용하세요.
TextExtraction_Speed
이 설정은 처리 속도에 맞게 최적화되어 있습니다:
품질이 낮은 작은 텍스트 영역을 포함해 이미지의 모든 텍스트를 감지합니다(그림과 표는 감지되지 않음).
문서의 논리 구조를 완전히 합성하지는 않습니다.
문서 분석 및 인식 프로세스의 속도를 높입니다.
이 프로필은 문서를 RTF, DOCX 또는 텍스트 전용 PDF로 변환하는 용도가 아닙니다. 이러한 경우에는 문서 변환 프로필을 사용하세요.
// 미리 정의된 프로필 로드Engine->LoadPredefinedProfile( L"TextExtraction_Accuracy" );
처리 설정을 변경하려면 적절한 Parameter 객체를 사용하세요. 자세한 내용은 아래 특정 작업에 대한 추가 최적화를 참조하세요.
3단계. 이미지 로드 및 전처리
ABBYY FineReader Engine은 여러 페이지로 구성된 문서를 처리할 수 있는 FRDocument 객체를 제공합니다.단일 문서의 이미지를 로드하고 전처리하려면 FRDocument 객체를 생성한 다음 여기에 이미지를 추가해야 합니다. 다음 방법 중 하나를 사용할 수 있습니다:
Engine 객체의 CreateFRDocumentFromImage 메서드를 사용해 FRDocument 객체를 생성합니다. 이 메서드는 FRDocument 객체를 생성하고 지정한 파일에서 이미지를 로드합니다.
// 이미지 파일을 열고 FRDocument 객체 생성FREngine::IFRDocumentPtr frDocument = Engine->CreateFRDocumentFromImage( L"C:\\MyImage.tif", 0 );
4단계. 문서 인식
문서를 인식하려면 FRDocument 객체의 분석 및 인식 메서드를 사용해야 합니다. 이 객체는 문서 분석과 인식을 위한 다양한 메서드를 제공합니다. 하나의 메서드만으로 문서 분석, 인식 및 합성을 수행할 수 있는 가장 편리한 방법은 Process 메서드입니다. 이 메서드는 다중 프로세서 및 멀티코어 시스템의 동시 처리 기능도 가장 효율적으로 활용합니다. 하지만 Preprocess, Analyze, Recognize, Synthesize 메서드를 사용하여 전처리, 분석, 인식, 합성을 순차적으로 수행할 수도 있습니다.
// 문서를 분석, 인식 및 합성합니다// 프로필이 로드되어 있으면 처리 메서드에 추가 매개변수를 전달할 필요가 없습니다frDocument->Process( 0 );
5단계. 중요한 정보 검색
분석 중에 ABBYY FineReader Engine은 텍스트, 표, 그림 등이 포함된 이미지 블록을 선택합니다. 인식 과정에서는 텍스트 데이터가 포함된 블록이 인식된 텍스트로 채워집니다.ABBYY FineReader Engine에서 Layout 객체는 블록과 인식된 텍스트를 저장하는 역할을 합니다. 문서 처리의 주요 시나리오는 처리 중인 문서를 나타내는 FRDocument 객체 내의 Layout을 사용합니다. 문서 페이지의 Layout에 액세스하려면 IFRPage::Layout 속성을 사용합니다.키워드를 검색하려면 텍스트, 표 또는 바코드 블록의 속성을 통해 액세스할 수 있는 Text 객체를 사용하여 인식된 텍스트를 볼 수 있습니다.찾은 중요 데이터는 필요에 따라 저장하거나 처리할 수 있습니다. 자세한 내용은 아래의 특정 작업을 위한 추가 최적화를 참조하십시오.
(선택 사항) 6단계. 문서 내보내기
또는 추출한 텍스트를 TXT처럼 쉽게 검색할 수 있는 형식이나, JSON처럼 나중에 필요한 정보를 쉽게 가져올 수 있는 구조화된 형식으로 저장할 수도 있습니다.FRDocument 객체의 Export 메서드를 해당 FileExportFormatEnum 상수와 함께 매개변수 중 하나로 사용합니다. 해당 내보내기 객체를 사용하여 내보내기의 기본 매개변수를 변경할 수 있습니다. 자세한 내용은 아래의 특정 작업을 위한 추가 최적화를 참조하십시오.FRDocument 객체 작업을 마친 후에는 이 객체가 사용한 모든 리소스를 해제하십시오. IFRDocument::Close 메서드를 사용합니다.
FREngineDistribution.csv 파일을 사용하면 애플리케이션이 작동하는 데 필요한 파일 목록을 자동으로 생성할 수 있습니다. 이 시나리오로 처리하려면 5열(RequiredByModule)에서 다음 값을 선택합니다.CoreCore.ResourcesOpeningOpening, ProcessingProcessingProcessing.OCRProcessing.OCR, Processing.ICRProcessing.OCR.NaturalLanguagesProcessing.OCR.NaturalLanguages, Processing.ICR.NaturalLanguages표준 시나리오를 수정하는 경우 그에 맞게 필요한 모듈도 변경하십시오. 또한 인터페이스 언어, 인식 언어 및 애플리케이션에서 사용하는 추가 기능도 지정해야 합니다(예: PDF 파일을 열어야 하는 경우 Opening.PDF, CJK languages 텍스트를 인식해야 하는 경우 Processing.OCR.CJK). 자세한 내용은 Working with the FREngineDistribution.csv File을 참조하십시오.
MultiProcessingParams 객체 - Linux 및 Windows 전용 대량의 이미지를 처리할 때는 동시 처리가 유용할 수 있습니다. 이 경우 이미지 열기 및 전처리, Layout 분석, 인식 과정에서 처리 부하가 프로세서 코어에 분산되므로 처리 속도를 높일 수 있습니다. 읽기 모드(동시 또는 순차)는 MultiProcessingMode 속성으로 설정합니다. RecognitionProcessesCount 속성은 시작할 수 있는 프로세스 수를 제어합니다.