如何提取PDF文件中的表格内容?
我想提取表的内容以PDF喜欢这样:如何提取PDF文件中的表格内容?
我写使用iText java PDF libray可以逐行读取PDF文件行的内容这个java程序,但我不知道如何让表的内容
import com.itextpdf.text.pdf.PdfReader;
import com.itextpdf.text.pdf.parser.PdfTextExtractor;
public class PDFReader {
public static void main(String[] args) {
// TODO, add your application code
System.out.println("Lecteur PDF");
System.out.println (ReadPDF("D:/test.pdf"));
}
private static String ReadPDF(String pdf_url)
{
StringBuilder str=new StringBuilder();
try
{
PdfReader reader = new PdfReader(pdf_url);
int n = reader.getNumberOfPages();
for(int i=1;i<n;i++)
{
String str2=PdfTextExtractor.getTextFromPage(reader, i);
str.append(str2);
System.out.println(str);
}
}catch(Exception err)
{
err.printStackTrace();
}
return String.format("%s", str);
}
}
这就是我得到:
,但是这不是我想要的,我想提取由列线和列的表行的内容,例如,保存在每行中的Java数组
第一阵列将包含:“N° “,”DATE OBSERVATIONS“,”TEXTE“
第二个数组将包含:”029/14“,”2014年1月1日替换AVURNAV ...“,”SETE A compter du lundi 7 juillet 2014débuterontles trav ...“
第三个数组将包含:”037/14“,”Le 15 octobre 2014 remplace AVURNAV ...“,”SETE Du 15 septembre 2014 au 15 juillet 2015,travaux ....“
等
感谢
您可能必须确定共同项目开始/结束字符序列将数据分割成一个数组,如果你的PDF库不支持提取表。 例如,第一个字段为nnn/nn
,第二个字段结束nnnn/nn
,第三个字段在下一个第一个字段开始的地方结束。
这是一个棘手的问题 - 我不得不使用基于坐标的方法来处理这个问题,但是您的pdf库可能不支持提取字母的位置以及实际文本。
iText确实可以让你获得所有文本片段甚至所有字形的x和y坐标,但它仍然是一个棘手的问题,正如解答[原始问题](http://*.com/a/4030714/1622493)。 –
跟着我重复一遍:“没有表格,你可能认为在这个PDF中存在的所有表格都只是一种错觉。”根据您提取的文本顺序,您可以看到它的工作方式从上到下,从左到右。您需要每个文本的精确坐标,以及每个列和行的近似值。只有这样你才能重建它。 – usr2564301
@Jongware对你的口头禅的修改:“没有表格,你可能认为在这个PDF中存在的所有表格都只是一种错觉...... *除非PDF是一个标记的PDF。*”不幸的是,OP没有提供链接到他的PDF,以便我们可以检查它是否被标记。所以,亲爱的匿名用户:请更新您的问题,并告诉我们您的PDF是否被标记。 –
@BrunoLowagie:这样的标记文件是否包含行和列的标记? (我还没有(需要)这个特定的工作流程。)然后确实应该是可能的。 – usr2564301