메인 콘텐츠로 건너뛰기
이 항목은 Windows용 FRE에 적용됩니다.
여러 운영 체제와 컨테이너에서 .NET Core 애플리케이션을 실행할 수 있도록 ABBYY FineReader Engine은 엔진 라이브러리용 즉시 사용 가능한 .NET Core 래퍼를 제공합니다. 이 래퍼를 사용하면 ABBYY FineReader Engine API에 직접 액세스할 수 있습니다. 이 API는 몇 가지 사소한 예외를 제외하면 모든 플랫폼에서 동일합니다. 주목할 만한 제한 사항 중 하나는 IEngineLoader를 구현하는 객체를 Linux에서는 사용할 수 없다는 점입니다(차이점의 전체 목록은 Windows용 ABBYY FineReader Engine 12와 Linux용 버전의 차이점을 참조하세요).
이번 릴리스에서는 .NET Core 래퍼가 InprocLoaderOutprocLoader 객체를 사용하는 작업을 지원하지 않습니다.
컨테이너에서 애플리케이션을 사용하려면 .NET Core Runtime과 함께 애플리케이션을 컨테이너 이미지에 포함하세요. Docker 컨테이너에 ABBYY FineReader Engine을 배포하는 방법에 대한 자세한 내용은 Docker 컨테이너 내부에서 ABBYY FineReader Engine 12 실행을 참조하세요.

.NET Core 프로젝트에 ABBYY FineReader Engine 라이브러리 추가

ABBYY FineReader Engine에는 FineReader Engine용 .NET Core 래퍼가 포함된 FREngine.DotNet.Interop.dll 파일이 제공됩니다. 이 파일은 설치 폴더의 Bin 또는 Bin64 폴더에서 찾을 수 있습니다. 프로젝트의 종속성 어셈블리에 FREngine.DotNet.Interop.dll을 추가하고, ABBYY FineReader Engine 기반 애플리케이션과 함께 이 파일도 재배포해야 합니다.
지원되는 .NET Core 버전은 6뿐입니다.

ABBYY FineReader Engine 로드 및 언로드

Engine 객체를 초기화하려면 먼저 정적 FREngine 클래스의 SetFREnginePath 메서드로 FREngine.dll 경로를 설정한 다음, 같은 클래스의 InitializeEngine 함수를 사용합니다. Engine 객체를 언로드하려면 DeinitializeEngine 함수를 사용합니다.
// 초기화하기 전에
// ABBYY FineReader Engine 라이브러리(freRootPath)의 경로를 지정합니다.
FREngine.FREngine.SetFREnginePath ( freRootPath );
// Engine 객체 로드
engine = FREngine.FREngine.InitializeEngine( customerProjectId, licensePath, licensePassword, "", "", false );    
...
// Engine 객체 언로드
if ( engine == null )
{
   // Engine이 로드되지 않았습니다.
   return;
}
 
engine = null;
GC.Collect();
GC.WaitForPendingFinalizers();
GC.Collect();
 
FREngine.FREngine.DeinitializeEngine();

가비지 컬렉션

.NET Core 래퍼의 모든 객체는 IDisposable 인터페이스를 상속하며, 이 인터페이스는 객체에 할당된 리소스를 해제하는 역할을 합니다. 이 인터페이스를 구현하면 객체가 더 이상 필요하지 않을 때 가비지 컬렉션이 자동으로 수행됩니다. 객체 사용을 마칠 때는 using 문을 사용해야 하며, 특히 IFRDocument, IFRPages, PDFExportParams 등과 같이 문서 처리, 합성 또는 내보내기와 관련된 리소스를 많이 사용하는 객체의 경우 더욱 중요합니다(아래 예 참조).
using (FREngine.FRDocument document = engineLoader.Engine.CreateFRDocument()) 
{
   try 
   {
     // 이미지 파일을 문서에 추가
     Console.WriteLine("Loading image...");
     document.AddImageFile(imagePath, null, null);
     ...
     // 'balanced' 시나리오를 사용하여 결과를 PDF로 저장
     using (FREngine.PDFExportParams pdfParams = engineLoader.Engine.CreatePDFExportParams()) 
     {
       pdfParams.Scenario = FREngine.PDFExportScenarioEnum.PES_Balanced;
       document.Export(Path.Combine(FreConfig.GetSamplesFolder(), @"SampleImages\Demo.pdf"),
       FREngine.FileExportFormatEnum.FEF_PDF, pdfParams);
     }
   }
}
using 문을 사용하지 않으려면 Dispose 메서드를 명시적으로 호출하세요. 샘플 .NET Core에서 ABBYY FineReader Engine이 작동하는 방식을 보여 주는 Hello 코드 샘플을 참조하세요.