このシナリオでは、ABBYY FineReader Engine を「スキャン用コンピューター」で使用して画像をスキャンし、ファイルとして保存します。 このシナリオは、文書処理の前段階として、他のシナリオの一部として使用できます。つまり、後続の処理に備えて文書の電子版を取得するために使用されます。たとえば、保管用に文書をスキャンする場合、文書の編集可能な版を取得する場合、文書から特定のデータを抽出する場合などに利用できます。 紙の文書をスキャンして画像を電子形式で保存することで、印刷文書の高品質な電子版を作成できます。 文書は、次の処理段階を経る場合があります。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.
- スキャン 文書は、スキャナーで利用可能な 2 種類のスキャンインターフェース (TWAIN または WIA) のいずれかを使用してスキャンすることも、ABBYY 独自のスキャンインターフェースを使用してスキャンすることも、スキャンインターフェースを使用せずにスキャンすることもできます。
- スキャン画像の前処理 スキャン後、画像には前処理を施すことができます。前処理には、ノイズ除去、ゆがんだテキスト行の補正、色の反転、黒い余白の削除、画像の向きや解像度の補正が含まれます。見開きページは、2 つの別々の画像に分割できます。処理後の画像は、JPEG、TIFF、BMP などのさまざまな画像形式で保存できます。
シナリオの実装
ステップ 1. ABBYY FineReader Engine の読み込み
ステップ 1. ABBYY FineReader Engine の読み込み
ABBYY FineReader Engine の使用を開始するには、Engine オブジェクトを作成する必要があります。Engine オブジェクトは、ABBYY FineReader Engine オブジェクト階層の最上位にあるオブジェクトで、さまざまなグローバル設定、一部の処理メソッド、および他のオブジェクトを作成するためのメソッドを提供します。Engine オブジェクトを作成するには、InitializeEngine 関数を使用できます。あわせて、Engine オブジェクトを読み込むその他の方法 (Win) も参照してください。
C#
ステップ 2. スキャン
ステップ 2. スキャン
ABBYY FineReader Engine には、スキャンソースを管理するための ScanManager オブジェクトが用意されています。このオブジェクトの ScanSources プロパティでは、利用可能なすべてのスキャナーの一覧にアクセスできます。また、FindScanSources メソッドを使用すると、スキャナーが提供する API タイプおよびスキャンオプションの設定に使用するユーザーインターフェースの種類に基づいて、スキャナーを絞り込むことができます。ファイルをスキャンしてディスクに保存するには、ScanSource オブジェクトの以下の2つのメソッドのいずれかを使用します。スキャンが完了するまで処理を返さない Scan メソッドと、非同期スキャン操作を開始して即座に処理を返す BeginScan メソッドです。IScanCallback インターフェースを実装することで、スキャンの進行状況に関する通知を取得できます。ABBYY FineReader Engine 12 APIからアクセス可能なパラメーターには、明るさ、カラー、解像度、画像圧縮タイプ、画像の回転角度、スキャン領域のサイズ、両面スキャンモード、自動フィーダーモード、ページ間の一時停止などがあります。スキャンパラメーターは、ScanSourceオブジェクトのScanSettingsプロパティを使用して設定します。このプロパティを使用してScanSourceSettingsオブジェクトにアクセスでき、そこからスキャンソースのスキャン設定を参照・変更できます。画像を同期的にスキャンするには:
- ScanManager オブジェクトを作成します。スキャンログを出力するかどうかは、CreateScanManager メソッドの入力パラメーターで指定できます。
- スキャナーがサポートするAPIとUIの種類を指定して、ScanManagerオブジェクトのFindScanSourcesメソッドを使用してスキャンソースを選択します。
- ユーザー自身がスキャン オプションを設定するためのダイアログを表示しない場合は、選択したScanSourceのScanSettingsプロパティを使用してスキャン オプションを調整します。明るさ、解像度、その他のパラメーターには、ScanSourceSettings オブジェクトの対応するプロパティで適切な値を設定します。このスキャナーで使用可能な設定は、ScanSource の Capabilities プロパティで確認できます。
- スキャンしたページの保存先フォルダー名を指定します。フォルダー名には、たとえば ScanFolder のような BSTR 変数を指定する必要があります。
- ユーザーに表示するダイアログの種類 (何も表示しない場合は SSUIT_None 定数を渡します) と、結果の保存先フォルダーの ScanFolder パスをパラメーターとして指定して、ScanSource オブジェクトの Scan メソッドを実行します。
- このメソッドは、画像ファイル名を StringsCollection オブジェクトで返します。この StringsCollection オブジェクトから画像ファイル名を取得し、それらのファイルを通常の画像ファイルと同様に処理できます。
- IScanCallback インターフェイスを実装するオブジェクトを作成します。非同期スキャン処理では、コールバック インターフェイスからの通知が非常に役立ちます。
- ScanManager オブジェクトを作成します。スキャンログを出力するかどうかは、CreateScanManager メソッドの入力パラメーターで指定できます。
- スキャナーがサポートするAPIとUIの種類を指定し、ScanManager オブジェクトの FindScanSources メソッドを使用してスキャンソースを選択します。
- ユーザー自身がスキャン オプションを設定するためのダイアログを表示しない場合は、選択した ScanSource の ScanSettings プロパティを使用してスキャン オプションを調整します。明るさ、解像度、その他のパラメーターについては、ScanSourceSettings オブジェクトの対応するプロパティで適切な値を選択します。このスキャナーで使用可能な設定は、ScanSource の Capabilities プロパティを使用して確認できます。
- スキャンしたページの保存先となるフォルダー名を指定します。フォルダー名は、たとえば ScanFolder のような BSTR 型の変数で指定する必要があります。
- ScanSource オブジェクトの BeginScan メソッドを実行し、パラメーターとして、ユーザーに表示するダイアログの種類 (ダイアログを表示しない場合は
SSUIT_None定数を渡します) 、および結果を格納するフォルダーの ScanFolder パスを指定します。さらに、作成したコールバック オブジェクトへのポインターも渡す必要があります。 - 画像ファイルへのパスは、IScanCallbackインターフェイスのOnImageScanned通知で返され、処理の完了はOnScanComplete通知で通知されます。これらのメソッドの実装は自分で行うため、それぞれの状況でどのように処理するかを選択できます。たとえば、画像ファイルへのパスを受け取ったら、ディスク上の他のファイルと同じように扱い、通常どおりFineReader Engineで処理するために読み込むことができます。
C#
ステップ 3. ABBYY FineReader Engine のアンロード
ステップ 3. ABBYY FineReader Engine のアンロード
ABBYY FineReader Engine の使用を終えたら、Engine オブジェクトをアンロードする必要があります。そのためには、エクスポート関数 DeinitializeEngine を使用します。
C#
必要なリソース
追加の最適化
- 文書の分割
- このシナリオでは、入力される画像の流れを文書単位にグループ化する必要が生じることがあります。たとえば、各文書のページ数があらかじめ分かっている場合や、最初の文書の最終ページと次の文書の先頭ページの間に、バーコード付きの区切りページが入るようにする場合です。詳しくは、バーコード認識シナリオを参照してください。
