我需要一个.NET库,以便使用,我可以从PDF,Excel和Word文件中提取文本数据。
理想情况下,一个免费的工具!
你会推荐什么?
非常感谢,
我需要一个.NET库,以便使用,我可以从PDF,Excel和Word文件中提取文本数据。
理想情况下,一个免费的工具!
你会推荐什么?
非常感谢,
正如有人谁花了许多天寻找免费的解决方案(几乎)这个确切的问题,我可以告诉你还算老实,你不会找到一个免费的图书馆,将能够从所有这些格式中提取文本很好。 我所知道的,唯一的图书馆做所有这些格式(更)伟大的工作是一个商业库,并且它不是真正原产于.NET,这是一个C ++ / COM库,用C ++ / CLI。 NET包装。
有哪些选择呢?
iTextSharp的 -这是一个从PDF文件中提取文本绝对精彩。 虽然这个库的更新版本是商业友好(LGPL),作者决定,而不是他们想要的软件收费,所以他们相反,它发布了AGPL下,所以除非你想释放所有的源代码,你可能不希望使用这些版本之一。 然而,在LGPL许可的最后一个版本(4.1.6)都可以在互联网上找到。 这太问题有一个链接到一个版本是LGPL下。
PDFBOX -另一个PDF库。 这其中,国际海事组织,是更好,因为它是在Apache 2.0许可。 有与它的几个问题,因为它有时 (也许很少)不会做的好工作作为iTextSharp的的。 我认为这更多的事实,它比其他任何一个新库。 然而,我的这个库的经验是几个月前。 该项目正在积极开发的,只是在上个月,52点的问题已经得到解决。 我会继续在这一个我的眼睛。 请注意,这是一个Java库。 (请阅读下面的内容了,为什么我包括它的更多信息。)
POI或NPOI -这些是专门针对微软office文件,特别是2007年之前的格式,OLE二进制文件格式编写的库。 它支持较新的OpenXML格式的,虽然我不知道如何成熟,库的一部分。 POI是java版本(以下保持阅读为什么我包括它的更多信息。),其中NPOI是土生土长的.NET版本。 然而,NPOI只支持Excel文档,其中POI可以做文本提取更多类型 。
打开XML SDK 2.0 -一个用于读取/修改办公室2007+(未加密的OpenXML)文件库中创建了微软自己! 这对于这些类型的文档工作惊人库。 然而,这是一个低级别的库,因此实际上并没有(据我所知),有它做的一切文本提取类。 有一个非常好的例子,(我不知道它涵盖某些情况下,如文本在表格等)从Word文档,文本提取的这个SO答案
蒂卡 -再次,另一个Java库(!我不告诉你关于无故Java库继续阅读:)),这将是接近“一个库”为文本提取,你可以得到。 蒂卡可以从许多不同类型的文件中提取元数据和结构化文本内容 ,使用现有的解析库。 实际上它使用POI和PDFBOX引擎盖办公和PDF文档下。
非商业
的IFilter可以使用,并在不同的问题提出了一些其他的SO答案被提及,但你会得到的文本是非结构化的。 有时,它只是坏...不可读对于人类来说,至少。 我相信的IFilter也弃用,这取决于许可证的问题,您可能无法重新分配他们。
为什么我提到所有这些Java库? 好吧,有两个原因。 首先,有没有免费的 .NET等价物来接近这些Java库的质量。 其次,你可以在.NET中使用这些库(我个人使用这些库这样做我自己,所以我可以为至少担保)使用IKVM 。 这是.NET的Java里面的实现。 这里是一个很好的例子,使用IKVM到提卡转换成可以在你的项目中使用.NET程序集。 也许关于IKVM最可怕的事情是, 它只是工作!
编辑:我忘了该博客的作者实际上已经发布的代码,并转换在图书馆一个github上的项目 。 所以,如果你想快速检查出来,你可以这样做在那里。 然而,这提卡和一岁多的更旧版本。 如果你预期的效果都没有,我建议你自己与最新版本尝试它。
你可以看看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#MS office文档文本
并为PDF我会用PDFsharp,它是开源的,并且具有在其网站上一些好的例子,例如:
http://pdfsharp.com/PDFsharp/
对于文本从PDF提取iTextSharp的是真棒。 它是免费和开源。
读取文本从PDF它使用这个库是很容易的。
我会推荐阅读Aspose总这一点。 几年前,我做了一个项目做几乎你问什么,并与使用不同版本的Office的Aspose(以使更改XML之前)之间的互操作办事处东西是最强大的库。 你可能会做基于你在说什么也有些OCR。 它并不便宜 ,但我发现他们的API的相当坚实和它的作品你是问有关的文件类型的大多数版本。 您应该能够使用免费试用,看看它是否会适合你的项目。 我有阅读Aspose比我使用他们的工具在生产环境中其他没有隶属关系。
阅读Aspose总
如果你只需要文本,那么你可以使用IFilter的。 它不是一个单一的产品,但它是免费的。 IFilter的用于提取支持Microsoft索引服务中的文本。 搜索关于IFilter的.NET C#关于如何使用它的例子。 如果您需要格式化文本,然后不正确的工具。 它提取原始文本只有大量换行符。