2010-01-22 59 views
20

倒也干脆,我要撕出的文本多个PDF的(相当多其实)为了在SQL数据库中坚持其之前分析的内容。提取从PDF文件在C#中的文本

我发现了一些非常粗略的免费C#库,这种工作(最好的一个使用iTextSharp),但有很多格式错误和一些字符乱码和很多时间有空格('')EVERYWHERE - 在每个字母之间,每个字母之间有很大的块,占用几行,这一切似乎都是随机的。

是否有这样做的任何简单的方式,我完全可以俯瞰(很有可能!),或者是一个艰巨的任务的位是涉及到将提取的字节值到信可靠?

干杯,

邓肯

+0

参见http://stackoverflow.com/q/10982156/292060 – goodeye 2016-07-29 01:20:22

回答

9

你可以看看this article。它基于优秀的iTextSharp图书馆。

+0

是啊,这是有一个我使用,虽然不是非常可靠,但是非常好。 但是,在下面看Tarydon的答案解释了为什么,实际上它可能是我要找到的最好的! 干杯 – 2010-01-22 10:43:35

+1

虽然iTextSharp图书馆是一个很棒的图书馆,但它并不是免费的商业目的。不要忘了细读https://sourceforge.net/p/itextsharp/itextsharp/ci/ed0d02ecca2a17b028b1f40b885efac41886b7ed/tree/src/notice.txt – 2017-01-24 10:18:51

17

有可能是在可靠地做一些这方面的困难。问题在于,PDF是一种演示文稿格式,它重视良好的版式。假设您只想输出一个单词:点击

一个PDF渲染引擎可以输出这2个独立的呼叫,在这个伪代码所示:

moveto (x1, y); output ("T") 
moveto (x2, y); output ("ap") 

这是因为字距(字母间的间距)的默认要做的字母之间T和a可能不被渲染引擎接受,或者它可能会在字符之间添加或删除一些微距以获得完全对齐的线条。这最终导致的结果是,在PDF中找到的实际文本片段通常不是完整的单词,而是其中的一部分。

+1

从PDF中提取文本的潜在困难的优秀描述。 – Lunatik 2010-12-24 10:12:04

1

您可以尝试Docotic.Pdf library(声明:我奇迹位工作),以从PDF文件中提取文本。图书馆使用一些启发式方法来提取漂亮的文字,而文字间的字母之间没有不必要的空格。

请看一看,显示how to extract text from PDF的样本。

2

你可以试试Toxy,在.NET中的文本/数据提取框架。在Toxy 1.0中,PDF将被支持。详情请访问http://toxy.codeplex.com

+0

-1这与PDF(尚未)有关。你可能会告诉我们访问http://www.websitethatplanetshavingcodetoextracttextfrompdfsoneday.com – 2014-02-04 20:07:06

+1

我说过了。无论如何,你会很快看到它。我会在六月之前提供。 – 2014-02-22 23:26:44

+1

Toxy 1.0在这里。它现在支持PDF – 2014-06-11 02:57:19

0

如果您正在寻找“免费”替代品,请查看PDF Clown。我个人已经使用了基于iFilter的方法,并且它可以很好地工作,以便您可以轻松地支持其他文件类型。示例代码here

9

看看提卡在DOTNET的,可通过的NuGet: https://www.nuget.org/packages/TikaOnDotnet.TextExtractor/

这是围绕着极其良好的Tika Java库的包装,使用IKVM。非常易于使用,可处理除PDF以外的各种文件类型,包括旧式和新式办公格式。它会自动选择基于文件扩展名的解析器,所以它一样简单:

var text = new TextExtractor().Extract(file.FullName).Text; 
0

如果你正在处理与数据导入到数据库的目的PDF文件,那么我建议考虑ByteScout PDF Extractor SDK。一些有用的功能包括:

  • 表检测;
  • 将文本提取为CSV,XML或格式文本(使用可选布局恢复);
  • 支持正则表达式的文本搜索;
  • 低级别的API来访问文本对象

免责声明:我参加与ByteScout