(メタデータ抽出機能を使ってみた編)こんにちは!aegifの大谷です。以前の記事からだいぶ時間が経ってしまいましたが、AlfrescoのOCR連携について、もう少し実用的な例を紹介します。Extraction)を利用し、OCRの出力結果文字列をコンテンツの属性に保存し、全文検索できるようにしてみたいと思います。メタデータ抽出機能って何?メタデータ抽出機能とは、コンテンツ実体(ファイル)の中身を解析し、コンテンツの属性(メタデータ)にコンテンツ実体から抽出したパラメータを格納する機能です。Officeファイルをアップロードすると、自動的にファイルを解析してこれらの情報を抽出し、コンテンツのしかるべき属性にセットします。Alfrescoにはデフォルトで多数のファイル形式に対してメタデータ抽出が設定されているので、コンテンツ登録時の属性登録が自動化され、登録の手間が省けます。今回は、カスタムのメタデータ抽出を定義し、OCR出力文字列をコンテンツの属性にセットします。(メタデータ抽出に関する詳しい説明はこちらを参照してください)まずは事前準備カスタムのメタデータ抽出を定義する前に、OCRのセットアップを行います。今回は、以前の記事の手順1から3を実施しておきます。カスタムのメタデータ抽出を実装するでは実際にカスタムのメタデータ抽出を作成していきます。実際にメタデータ抽出が行われるようにするためには、カスタムメタデータ抽出を実装し、その実装クラスをSpringビーンとしてAlfrescoに登録します。カスタムメタデータ抽出の実装を行います。Tikaが提供するメタデータ抽出も利用するため、TikaPoweredMetadataExtracterを利用します。拡張時のポイントは以下のとおりです。SUPPORTED_MIMETYPESの設定:今回はtiffのみを対象とするため、image/tiffを設定します。OCRをキックするために、RuntimeExec型の変数とsetterを定義します。インスタンスはSpringのDIによってセットされます(後述)。Tikaが提供するTiffParserを決め打ちで返すようにします。extractRawメソッドのOverride:メタデータ抽出ロジックを書きます。Tika標準のメタデータ抽出を行ったあと、OCRを実行して結果のテキストをcm:descriptionにセットします。以下がサンプルコードになります(exceptionハンドリングとかいろいろはしょってますので適宜実装してください)。}}また、以下のファイルを作成し、メタデータ格納先の属性を指定します。TiffOcrMetadataExtractor.javaとTiffOcrMetadataExtractor.propertiesを同じパッケージ以下に作成してください)。Mappingsauthor=cm:authortitle=cm:titledescription=cm:descriptioncreated=cm:created上記2ファイルが作成できたら、jarパッケージを作成し、配置します。カスタムメタデータ抽出の定義を追加する次に、先ほど作成したカスタムメタデータ抽出クラスをAlfrescoに登録するための定義ファイルを作成します。登録にはSpringの仕組みを使うので、Springビーンとしての定義を行う必要があります。ポイントは以下のとおりです。parentの指定:必ずbaseMetadataExtracterを指定します。OCRをキックするためのコマンドを指定します。以下が定義ファイルになります。ファイル名の最後が必ず"-context.xml"となるようにします。Alfrescoは起動時に、内部的に指定されている定義ファイルを読み込むのですが、カスタム定義を簡単に登録できるように、デフォルトでextensionディレクトリ以下に配置された*-context.xmlを読み込むよう設定されています。実際に使ってみる以上で設定は全て終わり、あとはAlfrescoを起動して動作確認をするだけです。Alfrescoを起動したら、以下の手順に従って動作確認してみましょう。OCRを連携し、メタデータ抽出機能を使ってOCRの結果をコンテンツのプロパティに格納するサンプルを紹介しました。連携するOCRツールが変わった場合は、ocrCommandプロパティでキックするコマンドをツールにあわせて変更するだけですので、お手持ちのOCRツールがある場合はそちらとの連携も試してみるとよいかもしれません。