【问题标题】:PDFBOX is not giving right outputPDFBOX 没有给出正确的输出
【发布时间】:2016-06-01 10:38:00
【问题描述】:

我正在解析 PDFBox 中的 pdf 以从中提取所有文本

public static void main(String args[]) {
    PDFTextStripper pdfStripper = null;
    PDDocument pdDoc = null;
    COSDocument cosDoc = null;
    File file = new File("C:\\Users\\admin\\Downloads\\Airtel.pdf");
    try {
        PDFParser parser = new PDFParser(new FileInputStream(file));
        parser.parse();
        cosDoc = parser.getDocument();
        pdfStripper = new PDFTextStripper();
        pdDoc = new PDDocument(cosDoc);
        pdfStripper.setStartPage(1);
        pdfStripper.setEndPage(1);
        String parsedText = pdfStripper.getText(pdDoc);
        System.out.println(parsedText);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } 
  }

但它没有在输出中给出任何文本 帮助

【问题讨论】:

    标签: pdfbox extraction text-extraction


    【解决方案1】:

    PDFBox 提取文本的方式类似于 Adob​​e Reader 复制和粘贴文本的方式。

    如果您在 Adob​​e Reader 中打开文档并按 标记所有文本(您会看到几乎没有标记任何内容)并将其复制并粘贴到编辑器中,您会发现 Adob​​e Reader 也很难提取任何东西。

    PDFBox 和 Adob​​e Reader(或任何其他普通文本提取器)都不能从您的文档中提取文本的原因是其中几乎没有文本!您看到的“文本”不是使用文本绘制操作绘制的,而是通过将每个“字符”的轮廓定义为路径并填充该路径中的区域来绘制的。因此,文本提取器没有任何迹象表明甚至存在文本。

    您的文档中实际上有两个字符的真实文本,“以前的余额”和“付款”框之间的“-”号以及“付款”和“调整”框之间的“-”号。甚至这两个字符也没有按需要提取,因为字体没有提供这些字符所代表的 Unicode 代码点的信息。

    因此,提取文档文本内容的几乎唯一机会是将 OCR 应用于文档。

    【讨论】:

    • 我也想试试 Tesseract,但我没有第一手经验。
    • tesseract, abbyy, asprise 所有这些都是用 C++ 构建的。有没有纯java内置的库?
    • Tess4j(您提出的)是 Tesseract 的 JNA 包装器。我不知道 OCR 应用程序市场好到可以推荐其中的任何一个。
    猜你喜欢
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 2015-08-20
    • 2020-05-06
    • 1970-01-01
    • 2012-09-07
    相关资源
    最近更新 更多