이 시나리오의 결과물은 편집 가능한 문서 버전입니다.이 시나리오에서는 문서 이미지를 원본 서식을 그대로 유지한 상태로 인식하고, 데이터를 편집 가능한 파일 형식으로 저장합니다. 그 결과 편집 가능한 문서 버전을 얻을 수 있으며, 이를 통해 오류를 쉽게 확인하고 수정할 수 있습니다. 또한 텍스트 전체 또는 일부를 복사해 재사용할 수도 있습니다.문서는 여러 처리 단계를 거치며, 이 과정은 다른 일반적인 시나리오와 몇 가지 측면에서 약간 다릅니다.
스캔한 이미지 또는 사진 전처리
스캐너나 디지털 카메라로 얻은 이미지는 광학 인식을 수행하기 전에 일부 보정이 필요할 수 있습니다. 예를 들어, 노이즈가 있거나 텍스트 줄이 왜곡된 이미지는 광학 인식이 제대로 수행되도록 보정해야 합니다.
문서 구조와 서식을 완전히 복원하는 인식
문서를 인식할 때는 문서의 다양한 레이아웃 요소(텍스트, 표, 이미지, 구분선 등)를 식별합니다. 문서 합성 과정에서는 문서의 논리 구조가 복원되며, 페이지 합성을 통해 문서 서식(글꼴, 스타일 등)도 완전히 복원할 수 있습니다.
아래에서는 문서를 변환할 때 ABBYY FineReader Engine 12를 사용하는 권장 방법을 자세히 설명합니다. 제안된 방법은 이 용도에 가장 적합한 처리 설정을 사용합니다.
1단계. ABBYY FineReader 엔진 불러오기
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를 사용하지 않는 경우, 이 변수들에 빈 string을 할당하십시오.wchar_t* LicensePassword;// FREngine.dll에 대한 HANDLEstatic HMODULE libraryHandle = 0;// 전역 FineReader 엔진 객체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 메서드를 사용해 이 시나리오에 가장 적합한 모든 처리 설정을 로드할 수 있습니다. 이 메서드는 프로필 이름을 입력 매개변수로 받습니다. 자세한 내용은 Working with Profiles를 참조하세요.ABBYY FineReader Engine은 이 시나리오에 대해 2가지 설정 옵션을 지원합니다:
ABBYY FineReader Engine은 여러 페이지로 구성된 문서를 처리할 수 있는 FRDocument 객체를 제공합니다. 이 객체를 사용하면 원본 텍스트와 단, 글꼴, 스타일 등을 유지하면서 문서의 논리적 구성을 보존할 수 있습니다.단일 문서의 이미지를 로드하고 전처리하려면 FRDocument 객체를 생성한 다음 여기에 이미지를 추가해야 합니다. 다음 방법 중 하나를 사용할 수 있습니다:
Engine 객체의 CreateFRDocumentFromImage 메서드를 사용해 FRDocument 객체를 생성합니다. 이 메서드는 FRDocument 객체를 만들고 지정된 파일에서 이미지를 로드합니다.
로드된 DocumentConversion_Normal 프로필을 사용한 이미지 전처리에는 방향 감지가 포함되지 않습니다. 이미지 방향을 자동으로 감지하려면 추가 Parameter를 설정하고 해당 객체를 전처리 함수에 전달해야 합니다. 자세한 내용은 아래의 Additional optimization for specific tasks를 참조하세요.
4단계. 문서 인식
문서를 인식하려면 FRDocument 객체의 분석 및 인식 메서드를 사용하는 것이 좋습니다. 이 객체는 문서 분석, 인식, 합성을 위한 다양한 메서드를 제공합니다. 문서 분석, 인식, 합성을 한 번에 수행할 수 있는 가장 편리한 메서드는 Process 메서드입니다. 또한 이 메서드는 다중 프로세서 및 멀티코어 시스템의 동시 처리 기능을 가장 효율적으로 활용합니다. 하지만 Preprocess, Analyze, Recognize, Synthesize 메서드를 사용해 전처리, 분석, 인식, 합성을 순차적으로 수행할 수도 있습니다.
// 인식된 문서를 편집 가능한 형식(예: RTF)으로 저장합니다frDocument.Export( "C:\\MyText.rtf", FREngine.FileExportFormatEnum.FEF_RTF, null );// FRDocument 객체를 해제합니다frDocument.Close();
애플리케이션 실행에 필요한 파일 목록은 FREngineDistribution.csv 파일을 사용해 자동으로 만들 수 있습니다. 이 시나리오로 처리하려면 5열(RequiredByModule)에서 다음 값을 선택합니다:CoreCore.ResourcesOpeningOpening, ProcessingProcessingProcessing.OCRProcessing.OCR, Processing.ICRProcessing.OCR.NaturalLanguagesProcessing.OCR.NaturalLanguages, Processing.ICR.NaturalLanguagesExportExport, Processing표준 시나리오를 수정하는 경우 이에 맞게 필요한 모듈도 변경하십시오. 또한 인터페이스 언어, 인식 언어, 그리고 애플리케이션에서 사용하는 추가 기능도 지정해야 합니다(예: PDF 파일을 열어야 하는 경우 Opening.PDF, CJK languages 텍스트를 인식해야 하는 경우 Processing.OCR.CJK). 자세한 내용은 Working with the FREngineDistribution.csv File을 참조하십시오.
MultiProcessingParams 객체 - Linux 및 Windows에서 구현됨 많은 수의 이미지를 처리할 때는 동시 처리가 유용할 수 있습니다. 이 경우 이미지 열기 및 전처리, Layout 분석, 인식, 내보내기 과정에서 처리 부하가 프로세서 코어에 분산되므로 처리 속도를 높일 수 있습니다. 읽기 모드(동시 또는 순차)는 MultiProcessingMode 속성을 사용하여 설정합니다. RecognitionProcessesCount 속성은 시작할 수 있는 프로세스 수를 제어합니다.
내보내기
내보내기 매개변수 조정 내보내기 매개변수 객체를 사용하여 문서 내보내기를 사용자 지정하는 방법을 설명합니다.