이 섹션에서는 다양한 프로그래밍 언어로 작성된 애플리케이션에서 ABBYY FineReader Engine을 사용할 때의 주요 사항을 설명하고, 관련 주제를 다루는 문서에 대한 참조도 제공합니다.
Windows용 FRE 애플리케이션 프로그래밍 인터페이스는 COM 표준을 따르며, C/C++, .NET, Java 또는 COM 구성 요소를 지원하는 모든 개발 도구에서 사용할 수 있습니다. 또한 엔진은 VBS, JS, Perl과 같은 스크립트 언어에서도 사용할 수 있도록 조정할 수 있습니다.
Linux용 FRE는 C/C++ 및 Java에서 사용할 수 있습니다.
동적 라이브러리의 진입점에서, 그리고 동적 라이브러리에 구현된 정적 및 전역 객체의 생성자와 소멸자 안에서는 ABBYY FineReader Engine을 초기화하거나 초기화 해제하지 마십시오. 이들은 동적 라이브러리 진입점에서 호출되기 때문입니다.
ABBYY FineReader Engine은 다른 위치에서 초기화하고 초기화 해제해야 합니다. 예를 들어 실행 모듈의 main 또는 WinMain 함수에서 수행할 수 있습니다.
: Windows에서는 Win32 LoadLibrary 및 FreeLibrary 함수가 재진입 가능하지 않기 때문에 이러한 제한이 있습니다.
초기화하는 동안 ABBYY FineReader Engine은 LC_CTYPE 설정을 운영 체제 기본값으로 재설정합니다. 애플리케이션이 로캘 종속 서비스에 의존하는 경우 이 점을 고려해야 합니다.
Windows에서 FRE는 msvcrt.dll의 LC_CTYPE 설정을 재설정합니다.
애플리케이션에서 생성하여 사용한 모든 객체를 엔진 객체의 초기화 해제 전에 삭제하지 않으면, 엔진 객체를 초기화 해제하는 동안 “Engine deinitialization failed” 예외가 발생할 수 있습니다. 가비지 컬렉션이 없는 프로그래밍 언어(예: C++)를 사용하는 경우에는 스마트 포인터 클래스를 사용하거나(Windows의 경우 C++ (COM)의 samples 참조), 생성 메서드로 만든 객체가 더 이상 필요하지 않을 때 해제해야 합니다. 모든 객체를 삭제했는데도 예외가 발생한다면, 가비지 컬렉터 동작이 원인일 수 있습니다. 애플리케이션을 Windows에서 Visual Basic .NET으로 개발한 경우, 값이 Nothing인 모든 객체는 삭제 대상으로만 표시될 뿐 실제로 삭제되지는 않습니다.
가비지 컬렉터가 객체를 정확히 언제 삭제하는지는 알 수 없습니다. 따라서 Linux 및 macOS 사용자는 엔진 객체를 초기화 해제하기 전에 가비지 컬렉터를 명시적으로 호출해야 합니다. Windows 사용자는 엔진 객체를 초기화 해제하기 전에 다음 메서드를 호출하여 가비지 컬렉터가 객체를 삭제하도록 해야 합니다.
GC.Collect()
GC.WaitForPendingFinalizers()
로그를 사용 중인 경우(엔진 객체의 StartLogging 메서드로 활성화 가능), 이 상황에서 “Warning: DeinitializeEngine() has detected external references to FREngine objects. It can indicate a leak if programming platform without automatic garbage collection is used.”라는 메시지가 표시될 수도 있습니다. 가비지 컬렉터를 명시적으로 호출하더라도(FRE for Windows에서는 GC.Collect) 객체가 항상 즉시 삭제되는 것은 아닙니다. 가비지 컬렉터가 있는 환경에서 작업하는 경우에는 이 메시지를 무시해도 됩니다.
가비지 컬렉션이 없는 환경(예: C++)에서 작업하는 경우, 이러한 예외와 메시지는 소스 코드에 문제가 있음을 나타낼 수 있습니다. 일부 객체가 잘못 처리되어 메모리 누수가 발생할 수 있습니다. 하지만 엔진 초기화 해제 후에는 모든 FineReader Engine 객체가 어쨌든 삭제되므로, 메모리 누수는 코드의 클라이언트 측 부분, 즉 FineReader Engine 객체용 자체 래퍼를 만들고 초기화 해제 전에 이를 해제하지 않은 경우에 발생할 수 있습니다.
해제되지 않은 객체 수를 반환하는 엔진 객체의 TotalObjectsCount 속성을 사용하는 것이 좋습니다. 이 속성은 메모리 누수의 원인을 추적하는 데 도움이 될 수 있습니다.
ABBYY FineReader Engine을 로드하고 언로드하는 방법을 자세히 설명합니다.
서버 애플리케이션에서 사용할 때의 특이사항을 설명합니다.
오류 처리에 대한 정보입니다.
PDF/XPS 형식으로 내보내는 동안 발생할 수 있는 오류를 처리하는 방법을 설명합니다.
ABBYY FineReader Engine 객체의 인터페이스에는 다양한 속성과 메서드가 있습니다. 이 문서에서는 언어별로 속성을 처리하는 방식을 설명합니다.
ABBYY FineReader Engine에는 세 가지 주요 컬렉션 유형이 있습니다. 이 섹션에서는 이러한 컬렉션을 사용하는 방법을 알아볼 수 있습니다.
ABBYY FineReader Engine의 일부 객체는 이른바 “연결 가능한 객체”입니다. 여기에서 이러한 객체로 작업할 때 유용한 권장 사항을 확인할 수 있습니다.
스크립팅 언어에서 FineReader Engine을 사용하는 방법을 자세히 설명합니다.
Java에서 FineReader Engine을 사용하는 방법을 설명합니다.
모든 플랫폼에서의 Java 프로그래밍 특성을 설명합니다.
.NET Core에서 FineReader Engine을 사용하는 방법을 설명합니다.
C (Objective-C)에서 FineReader Engine을 로드하고 언로드하는 방법을 설명합니다.
프로세스 외부 서버로 로드된 ABBYY FineReader Engine을 사용하는 방법을 자세히 설명합니다.