2011-12-22 37 views
4

アップロードされたドキュメントからプレーンテキストを抽出して検索可能にする必要があります。文書はMS Wordまたはpdf(スキャンまたはテキストを含む)です。問題のアプリケーションはLAMPスタック上で動作していますが、他のソフトウェアをインストールすることも可能です。このタスクを達成するために推奨できるツール、サービス、ライブラリ、またはそれらの組み合わせがありますか?文書からテキストを抽出/認識するには?

+1

私はあなたが[OCR](http://en.wikipedia.org/wiki/Optical_character_recognition)のビットが必要と思います – BoltClock

+0

古いスタイルの.docファイルからテキストを抽出することです深刻な痛み。彼らは簡単に解析できるものではありません。 .docxはほとんどの場合、.zmlファイルだけを圧縮しているので、やや簡単です。 –

+0

@BlotClock私は知っています。私はそれが明白であると仮定したので、明示的に言及しなかった。 – Maarten

答えて

4

textractor ruby​​gemがないようにあなたは、PDFファイルのためのpdftotext、GoogleドキュメントのためwvWare、DOCXのためdocx2txt.plのようなシェルユーティリティの組み合わせを使用することができます。

# on Ubuntu 
apt-get install wv xpdf-utils links 

PDFdocxを抽出するためのネイティブPHPクラスもあります。

TesseractでもあなたのためにOCRを実行する別のルビー宝箱はdocsplitです。

Solrをインデックスと検索に使用することをお勧めします。 Solr Cellプラグインを使用して、Word文書、PDFなどを索引付けして検索することができます。私は私のプロジェクトの1つでそれをうまく使う。 Solr Cellは、Apache POI,TikaおよびPDFBoxのようないくつかのプロジェクトに基づいています。

トリッキーな部分は、すべてのセル依存のjarsとsolrスキーマを設定し、インデックス付けのリクエストパラメータを把握することですが、すべてはwikiドキュメントから考えることができます。 Here's私のjarとスキーマを使い始めるには、スキーマの関連部分が「添付ファイル」を含む行です。

Solr CellはOCRを行いません。最初にOCR Engineを使用して検索可能にする必要があります。

OCRの場合、Googleが開発したOpenSource Engine Tesseractを使用することも、商用エンジンAbbyyを見たいかもしれません。どちらもあなたのPHPスクリプトから実行できるコマンドラインユーティリティとして来る。 AbbyyからTesseractに匹敵する結果を得るには、事前処理と後処理を行う必要があります1。クラウドサービスもありますが、これは簡単なオプションです。たとえば、WisetrendおよびAbbyy Cloudです。後者は現時点ではベータ版であるため、無料ですぐに使用できます。PHP code samplesです。

+0

Solr Cellは、スキャンされたPDFからテキストを抽出するOCRを持っていますか? – Tomato

+0

私はまったくわかりませんが、私はそうではないと思います。私はOCRをパイプライン上でさらに進めるべきだと思うし、[tesseract](http://code.google.com/p/tesseract-ocr/)はこれを行うための素晴らしい無料ツールだと聞いた。 – clyfe

+0

それはスキャンされたPDFに対してはうまくいきません。それらは、OCRソフトウェアによって最初に検索可能なPDF(テキストレイヤーが追加されている)に変換されるべきです。 – Tomato

0

PDFをテキストに変換するソフトウェアは分かりませんが、MS Wordの部分では、Javaで構築されたApache POI:http://poi.apache.org/を使用して、PHPファイルからバイナリを実行する必要がありますそれを機能させる。

もう一つの選択肢は、私が現在この目的のために使用しているJODConverterを使用することです。http://code.google.com/p/jodconverter/ Apache POIが機能しない場合は、jodconverterが認識します。私は3.0ベータ版を使用しています。

私のPHPコードでは、アップロードファイルを保存し、tmpディレクトリに新しいファイルを作成するtmpディレクトリのファイルにコンバータバイナリを実行しています。新しいファイルからプレーンテキストを取得します。

+0

注:ファイルをstdinで入力するほうが効率的かもしれないので、最初にディスクに保存する必要はありません。問題のuitilityがcliスイッチを提供していない場合、Linuxでは/ dev/stdinを使用できます。 – Maarten

3

私が懸念している限り、PHPでOCRを使うことはあまりありません。最善の解決策は、クラウドサービスを使用することです。クラウドサービスは、画像をアップロードしてOCRのデータを送り返すWeb APIです。お試しくださいwww.ocrsdk.com、それは最近ABBYYによって開始されたクラウドベースのOCR SDKです。ベータ版になっていますので、完全に無料で使用でき、準備が整ったPHP code samplesです。Disclamer:私は@ ABBYY

+0

面白い!これはソリューションのほんの一部なので、私は代わりに他の答えを編集しました(編集はまだ保留中です)。あなたが私を許してくれることを願っています。 – Maarten

関連する問題