PDF、Excel、Wordファイルからテキストデータを抽出できるように、.NETライブラリが必要です。
理想的には、無料のツールです!
何かお勧めしますか?
どうもありがとう、
この正確な問題の(ほぼ)無料の解決策を何日もかけて探してきた人として、これらすべての形式からテキストをうまく抽出できる無料のライブラリは見つからないことを正直に言うことができます。私が知っている唯一のライブラリは、これらすべての形式(およびそれ以上)で優れた機能を果たします。これは商用ライブラリであり、実際には.NETにネイティブではなく、C ++/CLIを備えたC++/COMライブラリです。 NETラッパー。
いくつかのオプションは何ですか?
iTextSharp-これはPDFからテキストを抽出するのに絶対に素晴らしいです。このライブラリの新しいバージョンは商用フレンドリー(LGPL)でしたが、作成者は代わりにソフトウェアの料金を請求することを決定したため、代わりにAGPLでリリースしました。したがって、すべてのソースコードをリリースする場合を除き、おそらく、これらのバージョンの1つを使用したくないでしょう。ただし、LGPLの下でライセンスされている最後のバージョン(4.1.6)は、インターネット全体で見つけることができます。このSOの質問には、LGPLの下にあるバージョンへのリンクがあります。
PdfBox-別のPDFライブラリ。これは、Apache 2.0ライセンスの下にあるため、IMOの方が優れています。それにはいくつかの問題があります。それは時々(おそらくめったに)iTextSharpほどうまく機能しないからです。私はこれを、他の何よりも新しいライブラリであるという事実に起因していると考えています。 ただし、このライブラリでの私の経験は数か月前のものです。このプロジェクトは積極的に開発されており、先月、52の問題が解決されました。私はこれに目を光らせていました。これはJavaライブラリであることに注意してください。(私がこれを含めた理由の詳細については、以下を読み続けてください。)
POIまたはNPOI-これらは、Microsoft Officeドキュメント、特に2007年以前の形式、OLEバイナリファイル形式用に特別に作成されたライブラリです。ライブラリのその部分がどれほど成熟しているかはわかりませんが、新しいOpenXML形式をサポートしています。POIはJavaバージョンです(これを含めた理由の詳細については、以下をお読みください)。ここで、NPOIはネイティブの.NETバージョンです。ただし、NPOIはExcelドキュメントのみをサポートしており、POIはさらに多くのタイプでテキスト抽出を実行できます。
Open XML SDK 2.0 -Office 2007+(暗号化されていないOpenXML)ドキュメントを読み取り/変更するためのライブラリが自分のMicrosoftを作成しました!これは、これらの種類のドキュメントを操作するためのすばらしいライブラリです。ただし、これは低レベルのライブラリであるため、実際には(私が知る限り)、すべてのテキスト抽出クラスを実行するわけではありません。このSO回答での単語文書からのテキスト抽出のかなり良い例があります(表のテキストなどの特定のケースをカバーするかどうかはわかりません)。
Tika-もう一度言いますが、別のJavaライブラリ(理由もなくJavaライブラリについては説明していません。読み続けてください!:))。これは、テキスト抽出用の「1つのライブラリ」にできるだけ近いものになります。Tikaは、既存の解析ライブラリを使用して、さまざまな種類のファイルからメタデータと構造化テキストコンテンツを抽出できます。実際には、オフィスやPDFドキュメントの内部でPOIとPdfBoxを使用しています。
非営利
iFiltersを使用でき、さまざまな質問に対する他のいくつかのSO回答で言及されていますが、返されるテキストは構造化されていません。時々それはただ悪いです...少なくとも人間には読めません。iFilterも非推奨になっていると思います。ライセンスの問題によっては、iFilterを再配布できない場合があります。
なぜこれらすべてのJavaライブラリについて言及したのですか?ええと、2つの理由で。まず、これらのJavaライブラリの品質に近い無料の.NETに相当するものはありません。次に、 IKVMを使用して.NETでこれらのライブラリを使用できます(私はこれらのライブラリを使用して個人的にこれを行ったので、少なくともそれを保証できます)。これは、.NET内のJavaの実装です。 これは、 IKVMを使用してTikaをプロジェクトで使用できる.NETアセンブリに変換する良い例です。おそらくIKVMで最も恐ろしいのは、それが正しく機能することです。
編集:そのブログの作者が実際にコードを投稿し、ライブラリをgithubプロジェクトに変換したことを忘れました。したがって、すぐにチェックアウトしたい場合は、そこで行うことができます。ただし、これはTikaのはるかに古いバージョンであり、1年以上前のものです。結果が期待どおりでない場合は、最新バージョンで試してみることをお勧めします。
toxy.codeplex.comをご覧ください。Toxyは、純粋な.NETテキスト抽出フレームワークです。
Toxyの使い方はとても簡単です。たとえば、test.xlsxというExcelスプレッドシートファイルを抽出します。
ParserContext context = new ParserContext("test.xlsx");
ISpreadsheetParser parser = ParserFactory.CreateSpreadsheet(context);
ToxySpreadsheet ss = parser.Parse();
//then you can start handle the result - a ToxySpreadsheet object
Word文書から抽出するためのリンクは次のとおりです。
C#でMSOfficeドキュメントからテキストを抽出する方法
PDFについては、PDFsharpを使用します。これはオープンソースであり、Webサイトにいくつかの良い例などがあります。
PDFから抽出するテキストの場合、itextsharpは素晴らしいです。それは無料でオープンソースです。
PDFからテキストを読むには、このライブラリを使用すると非常に簡単です。
これにはAsposeTotalをお勧めします。数年前、私はあなたが求めていることをほぼ正確に実行するプロジェクトを行い、異なるバージョンのOffice間でOffice Interopのものを使用することと比較しました(XMLに変更する前)Asposeは最も堅牢なライブラリでした。あなたはおそらくあなたが話していることに基づいていくつかのOCRをしなければならないでしょう。 安くはありませんが、APIはかなり堅実で、質問しているファイルタイプのほとんどのバージョンで機能します。無料試用版を使用して、プロジェクトに適しているかどうかを確認できるはずです。Asposeとは、実稼働環境でツールを使用したこと以外は関係ありません。
テキストだけが必要な場合は、iFilterを使用できます。単一の製品ではありませんが、無料です。iFilterは、MicrosoftIndexServiceをサポートするためにテキストを抽出するために使用されます。使用方法の例については、iFilter .NET C#で検索してください。フォーマットされたテキストが必要な場合は、適切なツールではありません。改行が多い生のテキストのみを抽出します。