【问题标题】:How to convert a PDF to a JSON/EXCEL/WORD file?如何将 PDF 转换为 JSON/EXCEL/WORD 文件?
【发布时间】:2020-04-17 07:52:03
【问题描述】:

我需要从带有标题的pdf文件中获取数据,以便进一步与数据库数据进行比较

我尝试使用 pdfbox、google vision ocr、itext,但所有库都给了我一行没有结构和标题。

示例:日期\n编号\n状态\n12\12\2020\n442334\已交付

我将尝试将 pdf 转换为 excel/word 并从中获取数据,但为了实现这一目标,我需要读取 pdf 并在 excel/word 中写入数据

如何获取带有标题的数据?

【问题讨论】:

  • Pdfs 不一定包含“这是一个表格”或“这是一个标题”之类的信息。只需要像“这里是这个文本”或“这里是这条线/矩形/......”之类的信息,除此之外的任何内容通常只能通过启发式、有根据的猜测来确定。有一些服务或软件包与这种启发式方法相得益彰。检查例如tabula 是一个专门研究表格数据提取的项目。

标签: java excel pdf ms-word ocr


【解决方案1】:

“Date\nNumber\nStatus\n12/12/2020\n442334\ndelivered”对我来说看起来足够有条理。您可以将其拆分为“\n”。不过,这需要一些表结构知识。

我在使用 Google Vision OCR 方面获得了很好的体验。你怎么称呼它?

【讨论】:

  • 我在 java cloud.google.com/vision/docs/pdf 上使用此代码我需要数据类型:日期 2020 年 12 月 12 日编号 442334 状态交付或 JSON“日期”:“2020 年 12 月 12 日”等
  • Java 代码末尾有这样的注释:“这里我们打印第一页的全文。响应包含更多信息:annotation/pages/blocks/paragraphs/words/symbols,包括置信度分数和边界框“你检查过响应对象是否包含你需要的信息吗?
  • 是的,我已经检查过了。我在 OCR 之后有 json : "text":"Date\nNumber\nStatus\n12\12\2020\n442334\delivered" + 其他信息对我来说并不有趣
【解决方案2】:

我的问题没有找到答案。

我将这段代码用于我的任务:

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.text.PDFTextStripperByArea;
import java.awt.*;
import java.io.File;
import java.io.IOException;

public class ExtractTextByArea {

    public String getTextFromCoordinate(String filepath,int x,int y,int width,int height) {
        String result = "";
        try (PDDocument document = PDDocument.load(new File(filepath))) {

            if (!document.isEncrypted()) {

                PDFTextStripperByArea stripper = new PDFTextStripperByArea();
                stripper.setSortByPosition(true);
               // Rectangle rect = new Rectangle(260, 35, 70, 10);
                Rectangle rect = new Rectangle(x,y,width,height);
                stripper.addRegion("class1", rect);
                PDPage firstPage = document.getPage(0);
                stripper.extractRegions( firstPage );
               // System.out.println("Text in the area:" + rect);
                result = stripper.getTextForRegion("class1");

            }
        } catch (IOException e){
            System.err.println("Exception while trying to read pdf document - " + e);
        }
        return result;
    }

}

【讨论】:

    猜你喜欢
    • 2015-07-16
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 2016-04-07
    • 1970-01-01
    相关资源
    最近更新 更多