根据正则表达式从pdf文件中提取文本?

时间:2012-07-17 16:41:27

标签: java parsing pdf itext

我有一个包含300页的pdf文件,每组页面都包含一个人的识别信息,例如社会安全号码。

让我们说1-4的页面是社交号码987-65-4320,5-6的页面是987-65-4321

我想提取第一位员工第一个社交号码位置开始到第二个社交号码位置的所有信息,然后保存他们在一个新的PDF文件中。

我看到的所有例子都是关于从pdf文件中提取所有文本,而不是基于这样的具体标准:

extract text from pdf files

请告知如何实现这一目标。

1 个答案:

答案 0 :(得分:1)

这不是一种自动化技术,但是你可以获得文本(我可能只是将pdf复制粘贴到文本文件中),并使用正则表达式来查找所需的信息吗?

在Java中,一些解析可能如下所示:

// Matches 3 digits, a dash, 2 digits, a dash, and four digits, and then all text
// until it finds another SSN
String text = "987-65-4320 some info 987-65-4321 other \ninfo";
Pattern p = Pattern.compile("(\\d{3}-\\d{2}-\\d{4})((?:.(?!\\d{3}-\\d{2}-\\d{4}))*)", Pattern.DOTALL);
Matcher m = p.matcher(text);
while (m.find())
    System.out.println(m.group(1) + ": " + m.group(2));

但没有看到您要保存的信息我无法帮助您获取它。

如果我想要一个新的PDF,我会将这些信息放入Microsoft Word或Google Docs并保存PDF。

或者,如果您只想从一系列员工中“提取所有信息”,那么是否可以创建原始PDF的副本并删除一些页面?我见过网站可以让你这样做,但是Chrome(你可以用它来打开本地PDF没有问题)打印对话框可以指定一系列页面,并将其保存为PDF格式。