サイトアイコン Embarcadero RAD Studio, Delphi, & C++Builder Blogs

WinSoftコンポーネントを使ってOCR文字認識を行う

はじめに

印刷物で提供された書類を業務で扱う際に、OCR(Optical Character Recognition)を利用すると情報のデータ化が省力化できます。WinSoftのOCRコンポーネントは、VCLアプリケーションにOCR機能を追加したいときに利用できるWindows向けコンポーネントです。 OCRコンポーネントを用いれば、画像に含まれるテキストを文字データとして抽出できます。 OCRコンポーネントのインストール方法については、以下のビデオをご確認ください。

デモのコンポーネントとその機能

デモアプリケーションには、2つのメインパネルがあります。左右それぞれのパネルには、他のすべてのビジュアルコンポーネントが配置されています。左側はTPanelで、TImageが置かれています。ここには、選択した画像がロードされます。[Select Picture]ボタンをクリックすると、OnClickイベントでTOpenPictureDialogウィンドウを実行し、ファイルから画像を読み込みます。選択したファイルは、左側のパネルのTImageコンポーネントに表示されます。以下のビデオでは、このデモを実行した様子をご覧いただけます。

[crayon-6768a28eb19b0060585438/]

右側パネルには、より多くのオプションが用意されています。テキスト画像ファイルを読み込んだときは、[Recognize]ボタンをクリックしてテキスト認識を開始することができます。テキスト認識処理を実行している間は、[Recognize]ボタンの表示は[Cancel]に変わり、テキスト認識処理が完了する前に停止させることができます。テキスト認識処理自体には、TOcrコンポーネントを使用しています。このコンポーネントの主な用途は、まさに画像内のテキスト認識です。

上記のコードからわかるように、テキスト画像がOCRコンポーネントによって割り当てられると、OCRコンポーネントによって認識されたテキストはTextプロパティによって取得することができます。[Recognize]ボタンをクリックしたときに実行される内容は、Canvasによる別の画像設定などもありますが、これが主なものです。

これらすべての設定は、TPageControlコンポーネントを使用して確認できます。 選択したページに応じて右側パネルのコンテンツを変更するタブコントロールとして動作します。 最初のページでは、単純テキストを表示します。 次は、HTML形式のテキスト、UNLVが続きます。次の「Regions」タブでは、フレーム内に段落を表示します。「Paragraphs」タブでは、(段落が複数ある場合)認識されたテキストを、段落ごとに分割します。「Text Lines」タブでは、テキストの行数をカウントします。「Words」では、認識したテキストを単語ごとに枠で囲みます。「Components」タブでは、認識したたテキストを(TRect)コンポーネント単位で分割して表示します。

以下は、上記の内容を処理するコードです。

[crayon-6768a28eb19bf711787671/]

テキスト認識処理中に[キャンセル]ボタンをクリックすると、CancelRequestフラグがtrueとなり、上記のコードは実行されず、右パネルに結果が表示されません。

このOCRデモのコードは、こちらからダウンロードできます。

補足:日本語認識のための設定

このOCRコンポーネントは、TesseractのOCRエンジンを使用しています。Tesseract OCRエンジンは、多言語に対応しており、日本語用の言語データ(tessdata)を使用すれば、日本語認識も可能です。デモアプリケーションで日本語認識を行うには、以下の追加手順を実施してください。

日本語用tessdataファイルのダウンロード

GitHubリポジトリから以下の2つの日本語用言語データをダウンロードし、デモアプリケーションの実行フォルダにコピーします。

OCRコンポーネントのプロパティ設定

OCRコンポーネントの以下のプロパティを設定します。

プロパティ
LanguagelgCustom
LanguageCodejpn+jpn_vert

OCRコンポーネントは、WinSoft社の製品です。この記事に記載された機能を利用するには、WinSoft社のサイトからOCRコンポーネントを購入する必要があります。OCRコンポーネントに関するサポートは、WinSoft社によって提供されます。

モバイルバージョンを終了