7

VB9 (VS2008) と Lucene.NET を使用してデスクトップ検索エンジンを開発しています。Lucene.NET のインデクサーは生のテキスト データのみを受け入れ、Microsoft Office (DOC、DOCX、PPT、PPTX) および PDF ドキュメントから生のテキストを直接抽出することはできません。そのようなファイルから生のテキスト データを抽出する最良の方法は何ですか?

4

3 に答える 3

6

Windows デスクトップ サーチと同様に、IFilter インターフェイスを実装するコンポーネントを使用できます。

于 2009-01-21T13:47:34.317 に答える
2

ここでは、MS Office ドキュメントについてのみ説明できます。これを行うにはいくつかの方法があります。

  • COM オートメーションの使用
  • よりアクセスしやすい形式でドキュメントを出力するコンバーターの使用
  • サードパーティ ライブラリの使用
  • Microsoft の OpenXML SDK を使用する

COM オートメーションには、常に信頼できるとは限らないという欠点があります。これは主に、モーダル ポップアップ ダイアログが原因でアプリケーションがハングする傾向があるためです。

Word 用のコンバーターが用意されています。Microsoft から入手できる Text Converter SDK をチェックアウトすると、スタンドアロン アプリケーションで Word に付属するドキュメント コンバーターを使用できるようになります。一部の C コーディングが必要ですが、Office と同じ変換エンジンを使用しているため、忠実度の高い結果が得られます。SDK はhttp://support.microsoft.com/kb/111716から入手できます。

サード パーティのライブラリを使用する 3 つ目のオプションについては、Apache POI または SourceForge のb2xtranslator プロジェクトを参照してください。後者は、バイナリ Word ドキュメントからテキストを抽出できる C# ライブラリを提供します。PowerPoint の開発はまだ初期段階ですが、テキスト抽出は既に機能しているはずです。

最後のオプションは、Microsoft の OpenXML SDK を使用することです。これは、好ましい/最も簡単な方法かもしれません。Google でサンプルを検索します。Office Compatibility Pack (Microsoft からダウンロードしてインストール) を使用して最初に変換することで、バイナリ ドキュメントを処理することもできます。

語:

"C:\Program Files\Microsoft Office\Office12\wordconv.exe" -oice -nme <input file> <output file>

エクセル:

"C:\Program Files\Microsoft Office\Office12\excelcnv.exe" -oice <input file> <output file>

パワーポイント:

"C:\Program Files\Microsoft Office\Office12\ppcnvcom.exe" -oice <input file> <output file>
于 2009-01-21T13:53:39.903 に答える
2

PDF の場合、テキスト抽出機能を備えた私の会社の.NET PDF Readerコンポーネントを使用できます。

これはまさに、PDF からテキストを抽出するために作成したコードです。

public String ReadTextFromPages(Stream s)
{
    using (PdfTextDocument doc = new PdfTextDocument(s))
    {
        PdfTextReader rdr = doc.GetPdfTextReader();
        return rdr.ReadToEnd();
     }
}
于 2009-01-21T13:55:46.983 に答える