はじめに
印刷物で提供された書類を業務で扱う際に、OCR(Optical Character Recognition)を利用すると情報のデータ化が省力化できます。WinSoftのOCRコンポーネントは、VCLアプリケーションにOCR機能を追加したいときに利用できるWindows向けコンポーネントです。 OCRコンポーネントを用いれば、画像に含まれるテキストを文字データとして抽出できます。 OCRコンポーネントのインストール方法については、以下のビデオをご確認ください。
デモのコンポーネントとその機能
デモアプリケーションには、2つのメインパネルがあります。左右それぞれのパネルには、他のすべてのビジュアルコンポーネントが配置されています。左側はTPanelで、TImageが置かれています。ここには、選択した画像がロードされます。[Select Picture]ボタンをクリックすると、OnClickイベントでTOpenPictureDialogウィンドウを実行し、ファイルから画像を読み込みます。選択したファイルは、左側のパネルのTImageコンポーネントに表示されます。以下のビデオでは、このデモを実行した様子をご覧いただけます。
[crayon-67405c4d0d110839221329/]右側パネルには、より多くのオプションが用意されています。テキスト画像ファイルを読み込んだときは、[Recognize]ボタンをクリックしてテキスト認識を開始することができます。テキスト認識処理を実行している間は、[Recognize]ボタンの表示は[Cancel]に変わり、テキスト認識処理が完了する前に停止させることができます。テキスト認識処理自体には、TOcrコンポーネントを使用しています。このコンポーネントの主な用途は、まさに画像内のテキスト認識です。
上記のコードからわかるように、テキスト画像がOCRコンポーネントによって割り当てられると、OCRコンポーネントによって認識されたテキストはTextプロパティによって取得することができます。[Recognize]ボタンをクリックしたときに実行される内容は、Canvasによる別の画像設定などもありますが、これが主なものです。
これらすべての設定は、TPageControlコンポーネントを使用して確認できます。 選択したページに応じて右側パネルのコンテンツを変更するタブコントロールとして動作します。 最初のページでは、単純テキストを表示します。 次は、HTML形式のテキスト、UNLVが続きます。次の「Regions」タブでは、フレーム内に段落を表示します。「Paragraphs」タブでは、(段落が複数ある場合)認識されたテキストを、段落ごとに分割します。「Text Lines」タブでは、テキストの行数をカウントします。「Words」では、認識したテキストを単語ごとに枠で囲みます。「Components」タブでは、認識したたテキストを(TRect)コンポーネント単位で分割して表示します。
以下は、上記の内容を処理するコードです。
[crayon-67405c4d0d119844740840/]テキスト認識処理中に[キャンセル]ボタンをクリックすると、CancelRequestフラグがtrueとなり、上記のコードは実行されず、右パネルに結果が表示されません。
このOCRデモのコードは、こちらからダウンロードできます。
補足:日本語認識のための設定
このOCRコンポーネントは、TesseractのOCRエンジンを使用しています。Tesseract OCRエンジンは、多言語に対応しており、日本語用の言語データ(tessdata)を使用すれば、日本語認識も可能です。デモアプリケーションで日本語認識を行うには、以下の追加手順を実施してください。
日本語用tessdataファイルのダウンロード
GitHubリポジトリから以下の2つの日本語用言語データをダウンロードし、デモアプリケーションの実行フォルダにコピーします。
- jpn.traineddata(横書き用)
- jpn_vert.traineddata(縦書き用)
OCRコンポーネントのプロパティ設定
OCRコンポーネントの以下のプロパティを設定します。
プロパティ | 値 |
---|---|
Language | lgCustom |
LanguageCode | jpn+jpn_vert |
OCRコンポーネントは、WinSoft社の製品です。この記事に記載された機能を利用するには、WinSoft社のサイトからOCRコンポーネントを購入する必要があります。OCRコンポーネントに関するサポートは、WinSoft社によって提供されます。