fess-crawlerにPostScriptテキスト抽出機能を追加

fess-crawlerに、PostScript(.ps)ファイルからテキストを抽出するPsExtractorを追加しました。これにより、Fessのクロール対象としてPostScriptファイルも扱えるようになります。

PostScriptとは

PostScriptはAdobe Systemsが開発したページ記述言語で、印刷やDTPの分野で広く使われてきたフォーマットです。PostScriptファイルにはテキスト描画命令が含まれていますが、プログラミング言語としての側面もあり、テキストの抽出は単純ではありません。

PsExtractorの仕組み

PsExtractorは、PostScriptのshow系オペレータを解析してテキストを抽出します。対応しているオペレータは以下の通りです。

オペレータ説明
show基本的なテキスト描画
ashow文字間隔調整付きテキスト描画
widthshow特定文字の幅調整付きテキスト描画
awidthshowashow + widthshow の組み合わせ
kshowカーニングプロシージャ付きテキスト描画
xshow個別X座標指定のテキスト描画
yshow個別Y座標指定のテキスト描画
xyshow個別XY座標指定のテキスト描画

文字列リテラルとしては、括弧形式の文字列((Hello World))と16進文字列(<48656C6C6F>)の両方に対応しています。括弧形式の文字列では、エスケープシーケンス(\n\t、8進数など)やネストされた括弧も正しく処理されます。

DI設定

extractor.xmlpsExtractorコンポーネントを登録し、application/postscript MIMEタイプにマッピングしています。

制限事項

現在の実装では以下のケースには対応していません。

  • ループやプロシージャによる動的なテキスト生成
  • フォントエンコーディングの再定義
  • バイナリエンコードされたPostScriptファイル

静的にshow系オペレータで描画されるテキストの抽出に特化した実装となっています。

テスト

12件のテストケースを作成し、基本的なテキスト抽出、16進文字列、エスケープシーケンス、ネストされた括弧、空コンテンツ、各種show系オペレータなどの動作を検証しています。

変更の詳細はPR #140を参照してください。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です