如何在pdf文件中提取表的内容?

时间:2015-07-09 22:00:58

标签: java pdf itext text-extraction pdf-extraction

我想在pdf中提取表格的内容,如下所示:

enter image description here

我使用iText java PDF libray编写了这个java程序,它可以逐行读取PDF文件的内容,但我不知道如何获取表的内容

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);
    }
}

这就是我得到的:

enter image description here

但这不是我想要的,我想逐行逐列提取表的内容,例如,保存java数组中的每一行

第一个数组将包含:“N°”,“DATE OBSERVATIONS”,“TEXTE”

第二个阵列将包含:“029/14”,“Le 1er sept 2014 remplace AVURNAV ...”,“SETE A compter du lundi 7 juillet2014débuterontlestrav ...”

第三个阵列将包含:“037/14”,“Le 15 octobre 2014 remplace AVURNAV ...”,“SETE Du 15 septembre 2014 au 15 juillet 2015,travaux ....”

等等

由于

1 个答案:

答案 0 :(得分:2)

如果PDF库不支持提取表格,则可能必须识别公共字段开头/结尾字符序列以将数据拆分为数组。 例如,第一个字段为nnn/nn,第二个字段以nnnn/nn结束,第三个字段在下一个第一个字段开始的位置结束。

这是一个棘手的问题 - 我之前不得不使用基于坐标的方法来处理这个问题,但是你的pdf库可能不支持提取字母的位置以及实际文本。