【问题标题】:How to detect OCR in a scanned Document with pdfbox 2.0.0?如何使用 pdfbox 2.0.0 检测扫描文档中的 OCR?
【发布时间】:2015-11-10 07:35:42
【问题描述】:

问题:我有一个包含许多子文件夹的大文件夹,其中包含许多 pdf。其中一些已经有 OCR。其中一些没有。所以我想写一个Java程序来过滤掉非OCR PDF并将它们复制到一个热文件夹中。

我测试了 20 个文档,它们的共同点是,如果你用编辑器打开它们,你可以找到“字体”这个词和 OCR 词,而在非 OCR 词中则找不到。我现在的问题是:如何使用 PDFbox 2.0.0 实施此检查?我发现的所有解决方案似乎都不适用于旧版本。而且我无法在文档中找到解决方案。 (这显然是我的错)

提前致谢。

【问题讨论】:

  • 这两种类型的文件是否来自相同的来源(例如相同的扫描软件)?如果是,那么它可能会起作用;如果没有,它不会。检查是否有字体就是这个意思。
  • 将带有 OCR 的扫描文档与不带 OCR 的扫描文档分开的最合理方法是尝试文本提取,参见。 PDFTextStripper 类和相关示例。如果此类在 PDF 中发现大量文本,则它不仅仅是扫描的。
  • @TilmanHausherr 是的,所有带有 OCR 的文件都是用 Abby 转换的。

标签: java apache pdf ocr pdfbox


【解决方案1】:

以下是确定字体是否位于页面顶层的方法:

    PDDocument doc = PDDocument.load(new File(...));
    PDPage page = doc.getPage(0); // 0 based
    PDResources resources = page.getResources();
    for (COSName fontName : resources.getFontNames())
    {
        System.out.println(fontName.getName());
    }
    doc.close();

Re: mkl 建议,这里是提取文本的方法:

    PDFTextStripper stripper = new PDFTextStripper();
    stripper.setStartPage(1); // 1 based
    stripper.setEndPage(1);
    String extractedText = stripper.getText(doc);
    System.out.println(extractedText);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 2011-09-05
    • 2012-04-21
    • 2011-06-07
    • 2014-11-17
    • 2015-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多