ABBYY FineReader Engine의 문서 처리는 여러 단계로 이루어집니다. 페이지 전처리, 분석, 인식, 페이지 합성, 문서 합성, 그리고 내보내기가 이에 해당합니다. 이 섹션에서는 페이지 전처리, 분석, 인식, 그리고 페이지/문서 합성을 다룹니다. 내보내기 매개변수에 대한 자세한 내용은 내보내기 매개변수 조정하기을 참조하세요.이제 처리 단계를 순서대로 살펴보겠습니다.
페이지 전처리 이 단계에서 FineReader Engine은 이미지 품질을 자동으로 개선하고 OCR을 방해할 수 있는 결함(페이지 방향, 반전된 이미지, 기하학적 왜곡 등)을 보정합니다.
레이아웃 분석 분석 단계에서 FineReader Engine은 서로 다른 유형의 데이터를 포함하는 영역을 찾습니다. 이러한 영역을 “블록”이라고 합니다.
인식 블록 내부의 이미지 부분은 블록 유형에 따라 서로 다른 방식으로 인식됩니다.
페이지 합성 텍스트와 배경색, 하이퍼링크, 기타 서식이 감지됩니다.
문서 합성 마지막으로 글꼴 스타일과 문서의 논리적 구조가 복원됩니다. FineReader Engine은 인식된 문서에서 제목을 감지하고, 목차를 재구성하며, 그림과 표의 캡션을 비롯한 기타 문서 구조 요소를 감지합니다.
처리를 시작하기 전에 매개변수 객체를 사용하여 페이지 전처리, 분석, 인식 및 합성의 매개변수를 설정할 수 있습니다. 모든 처리 매개변수에 대한 액세스를 제공하는 기본 객체는 DocumentProcessingParams 객체입니다. 이 객체에는 서로 다른 처리 단계에 영향을 주는 하위 객체 집합이 포함되어 있습니다.처리 단계에 따라 DocumentProcessingParams 객체에 대한 포인터 또는 그 하위 객체에 대한 포인터를 입력 매개변수로 처리 메서드에 전달할 수 있으며, 이를 통해 처리 결과에 영향을 줄 수 있습니다. FRDocument 및 FRPage 객체는 페이지 전처리, 분석, 인식 및 합성 메서드를 제공합니다.페이지 전처리, 분석, 인식 및 합성 과정은 프로필을 사용해서도 조정할 수 있으며, 가장 널리 사용되는 시나리오는 이미 충분히 검증된 사전 정의 프로필로 대부분 지원됩니다. 자세한 내용은 프로필 사용하기을 참조하세요.
각 페이지의 처리 매개변수를 설정하려면 DocumentProcessingParams 객체의 PageProcessingParams 하위 객체에 있는 속성을 사용합니다. PageProcessingParams 객체는 페이지 처리 매개변수를 설정하는 다음 객체 그룹의 상위 객체입니다.
PageProcessingParams 객체를 사용하면 각 처리 단계를 켜거나 끌 수도 있습니다. 예를 들어 블록을 수동으로 지정할 계획이고 레이아웃 분석이 필요하지 않다면, PageProcessingParams 객체의 PerformAnalysis 속성을 FALSE로 설정할 수 있습니다.
문서 처리 매개변수를 설정하려면 페이지 처리 매개변수 외에도 SynthesisParamsForDocument 객체를 통해 문서 합성 매개변수를 설정해야 합니다. 문서 합성 중에는 글꼴 스타일과 서식이 감지됩니다. 문서 글꼴과 스타일을 다루는 FineReader Engine 객체는 문서 합성이 완료된 후에만 의미를 갖습니다.다음과 같은 경우에는 문서 합성 단계를 생략할 수 있습니다.
인식된 텍스트를 TXT 형식으로 내보내는 경우. 이 형식으로 내보낼 때는 합성 정보가 사용되지 않습니다.
문서를 PDF ImageOnly 형식으로 내보내는 경우. 이 모드에서는 인식된 텍스트와 레이아웃 정보가 사용되지 않습니다.
그 밖의 모든 경우에는 문서 합성을 수행해야 합니다. 문서 합성을 생략하면 내보내는 동안 오류가 발생합니다.
이름에 “Process”가 포함된 메서드(예: IFRDocument::Process )에는 문서 합성 단계가 포함됩니다. 반면 FRPage 객체의 처리 메서드에는 이 단계가 포함되지 않으므로, 이러한 메서드를 사용한 후에는 내보내기 전에 문서 합성을 수행하는 메서드를 명시적으로 호출해야 합니다.
문서 합성 단계의 속도를 높이고 메모리 사용량을 줄일 수도 있습니다. 페이지 합성 중에 SynthesisParamsForPage 객체의 DetectFontFormattingAtPageLevel 속성을 TRUE로 설정하면, 이후 문서 합성 시 글꼴 매개변수와 문서 구조 감지(SynthesisParamsForDocument 객체의 DetectFontFormatting 및 DetectDocumentStructure)를 끌 수 있습니다. 다만 품질이 저하될 수 있습니다.문서의 텍스트나 레이아웃이 변경될 때마다(예: 블록이 제거되거나 추가되거나 텍스트가 편집되는 경우) 문서 합성 메서드를 다시 호출하는 것이 좋습니다. FRDocument의 SynthesizePages 메서드를 사용하면 변경된 문서 페이지 모음을 지정할 수 있으므로 필요한 데이터만 다시 계산됩니다.
PageProcessingParams 하위 객체에서 필요한 속성을 설정합니다. 모든 하위 객체의 모든 속성을 설정할 필요는 없습니다. 생성 시 적절한 기본값으로 초기화되기 때문입니다. 기본값이 아닌 값을 사용하려는 속성만 조정하면 됩니다.
레이아웃 분석 함수에 사용할 매개변수를 설정할 때는 인식에 영향을 주는 PageProcessingParams 하위 객체의 속성 값도 올바르게 설정해야 합니다. 이러한 매개변수는 모두 레이아웃 분석 중 생성되는 블록에 복사된 다음 인식에 사용되며, 이미지의 특정 부분을 분석하는 과정에 인식이 포함될 수도 있으므로 이를 권장합니다.
필요한 경우 SynthesisParamsForDocument 하위 객체에서 필요한 속성을 설정합니다. 모든 객체와 하위 객체의 모든 속성을 설정할 필요는 없습니다. 생성 시 적절한 기본값으로 초기화되기 때문입니다. 기본값이 아닌 값을 사용하려는 속성만 조정하면 됩니다. DocumentProcessingParams 객체의 PerformSynthesis 속성 값이 true인지 확인하십시오.
DocumentProcessingParams 객체 또는 그 하위 객체 집합을 FRDocument, FRPage, Engine 객체의 처리 메서드 중 하나에 전달할 수 있습니다.
문서를 인식할 때는 FRDocument 객체의 처리 메서드를 사용하는 것이 좋습니다. 이 객체는 다양한 처리 메서드를 제공합니다. 전처리, 분석, 인식, 합성을 하나의 메서드로 수행할 수 있는 가장 편리한 메서드는 Process 메서드입니다. 또한 이 메서드는 다중 프로세서 및 멀티코어 시스템의 동시 처리 기능을 가장 효율적으로 활용합니다. 하지만 해당 메서드들을 사용해 전처리, 분석, 인식, 합성을 순차적으로 수행할 수도 있습니다.
C# 코드
FREngine.IEngine engine;FREngine.IFRDocument frdoc;// 문서가 생성되었고 문서에 이미지가 추가되었다고 가정합니다// DocumentProcessingParams를 만들고 매개변수를 설정합니다FREngine.IDocumentProcessingParams dpp = engine.CreateDocumentProcessingParams();FREngine.IPageProcessingParams ppp = dpp.PageProcessingParams;ppp.PagePreprocessingParams.CorrectOrientationMode = COM_Auto;// 처리에 매개변수를 사용합니다frDoc.Process( dpp );