> ## Documentation Index
> Fetch the complete documentation index at: https://docs.abbyy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# .NET Core で ABBYY FineReader Engine を使用する

> バンドルされた .NET Core ラッパーを使用して、Windows 上の .NET Core アプリケーションで ABBYY FineReader Engine を利用できます。Docker コンテナー内へのデプロイも含まれます。

<Note>
  このトピックは Windows 用 FRE に適用されます。
</Note>

異なるオペレーティング システムやコンテナーで .NET Core アプリケーションを実行するために、ABBYY FineReader Engine には、Engine ライブラリ用のそのまま使える .NET Core ラッパーが用意されています。このラッパーを使用すると、ABBYY FineReader Engine API に直接アクセスできます。この API は、いくつかの小さな例外を除き、すべてのプラットフォームで共通です。主な制限の 1 つとして、IEngineLoader を実装するオブジェクトは Linux では使用できません (相違点の一覧については、[ABBYY FineReader Engine 12 for Windows and for Linux の違い](/ja/fine-reader/engine/specifications/differences-between-abbyy-finereader-engine-for-windows-and-linux)を参照してください) 。

<Warning>
  このリリースでは、.NET Core ラッパーは [InprocLoader](/ja/fine-reader/engine/api-reference/engine-loaders/inprocloader) および [OutprocLoader](/ja/fine-reader/engine/api-reference/engine-loaders/outprocloader) オブジェクトを使用した処理をサポートしていません。
</Warning>

アプリケーションをコンテナーで使用するには、.NET Core ランタイムとともにコンテナー イメージに含めてください。Docker コンテナーで ABBYY FineReader Engine を展開する方法の詳細については、[Docker コンテナー内で ABBYY FineReader Engine 12 を実行する](/ja/fine-reader/engine/distribution/distribution-windows/running-abbyy-finereader-engine-12-inside-a-docker-container)を参照してください。

<div id="adding-abbyy-finereader-engine-library-to-a-net-core-project">
  ## ABBYY FineReader Engine ライブラリを .NET Core プロジェクトに追加する
</div>

ABBYY FineReader Engine には、FineReader Engine 用の .NET Core ラッパーを含む FREngine.DotNet.Interop.dll ファイルが含まれています。このファイルは、インストール フォルダー内の Bin フォルダーまたは Bin64 フォルダーにあります。FREngine.DotNet.Interop.dll をプロジェクトの依存関係にあるアセンブリとして追加し、ABBYY FineReader Engine ベースのアプリケーションと共に再頒布する必要があります。

<Warning>
  サポートされている .NET Core のバージョンは 6 のみです。
</Warning>

<div id="loading-and-unloading-abbyy-finereader-engine">
  ## ABBYY FineReader Engine のロードとアンロード
</div>

[Engine](/ja/fine-reader/engine/api-reference/engine-object-iengine-interface) オブジェクトを初期化するには、まず静的な FREngine クラスの SetFREnginePath メソッドを使用して FREngine.dll へのパスを設定し、次に同じクラスの [InitializeEngine](/ja/fine-reader/engine/api-reference/functions/initializeengine-function) 関数を使用します。Engine オブジェクトをアンロードするには、[DeinitializeEngine](/ja/fine-reader/engine/api-reference/functions/deinitializeengine-function) 関数を使用します。

<Accordion title="C# code">
  ```csharp theme={null}
  // 初期化の前に
  // 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();
  ```
</Accordion>

<div id="collecting-garbage">
  ## ガベージコレクション
</div>

.NET Core ラッパー内のすべてのオブジェクトは IDisposable インターフェイスから派生しており、このインターフェイスはオブジェクトに割り当てられたリソースを解放する役割を担います。このインターフェイスを実装することで、オブジェクトが不要になったときにガベージが自動的に回収されます。オブジェクトの使用を終える際には、`using` ステートメントを使用する必要があります。特に、文書処理、合成、またはエクスポートに関連する負荷の高いオブジェクト、たとえば [IFRDocument](/ja/fine-reader/engine/api-reference/document-related-objects/frdocument)、[IFRPages](/ja/fine-reader/engine/api-reference/document-related-objects/frpages)、[PDFExportParams](/ja/fine-reader/engine/api-reference/parameter-objects/export-parameters/pdfexportparams) などでは重要です (以下の例を参照) 。

<Accordion title="C# コード">
  ```csharp theme={null}
  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);
       }
     }
  }
  ```
</Accordion>

`using` ステートメントを使用しない場合は、Dispose メソッドを明示的に呼び出してください。

サンプル

.NET Core での ABBYY FineReader Engine の動作を示す [Hello](/ja/fine-reader/engine/guided-tour/samples#hello) コードサンプルを参照してください。
