学习Qoppa jPDFText的科学实践(四)

Qoppa
placeholder image
admin 发布于:2025-06-10 15:04:01
阅读:loading

Qoppa Software是一家专注于PDF处理和数字文档解决方案的公司,提供丰富的Java、.NET和Web平台的组件。其产品广泛应用于企业、ZF*、金融、医疗等行业,旨在简化PDF和数字文档的处理、管理和集成。特别说明:只为单纯的学习摸索与自我突破,商业软件请勿直接使用于生产环境(购买商业授权)

1.基本介绍

PDFText – 用于从 PDF 中提取文本的 Java PDF 库。在一些常规需求应用开发中也常会遇到对PDF文件进行操作,对应的开发库也是比较多的,本期跟大家分享的是“Qoppa Software”推出的Java开发库,可用于PDF文档文本内容读取的应用场景。

jPDFText 是一个用于从 PDF 文档中提取文本的 Java 库。使用 jPDFText,可以处理 PDF 文档并提取文本内容,用于归档、存储、搜索或索引。jPDFText 基于 Qoppa 的专有 PDF 技术构建,因此您无需安装任何第三方软件或驱动程序。由于它使用 Java 编写,因此您的应用程序可以独立于平台运行,可以在 Windows、Linux、Unix(Solaris、HP UX、IBM AIX)、Mac OS X 以及任何其他支持 Java 运行时环境的平台上运行。

2.组件介绍

  • 从文件、网络驱动器、URL 或输入流加载 PDF 文档

  • 按逻辑阅读顺序提取文本

  • 将单词提取为字符串向量

  • 适用于 Windows、Linux、Unix 和 Mac OS X(100% Java)

  • 部署时无需安装或配置额外的驱动程序或软件

  • 在 JDK 1.4.2 及以上版本上测试

jPDFText 可以从 PDF 文档中提取现有的文本内容。如果您对识别扫描的 PDF 文档或包含图像的 PDF 文档中的文本感兴趣,需要使用官方提供的Java OCR 组件。Qoppa 尚未开发自己的文本识别引擎。这本身就是一个庞大的项目。我们尝试寻找一个 100% Java OCR 解决方案,但未能找到一个达到生产级水平的解决方案。

在评估其他非 Java OCR 引擎(包括商业和开源引擎)时,我们发现 Tesseract 是一个非常可靠的选择。Tesseract 最初由惠普开发,并作为开源项目提供给社区。谷歌自 2006 年以来一直赞助该项目。我们已经在桌面工具 PDF Studio 中发布了 Tesseract OCR 集成,并收到了来自最终用户的积极反馈。

Tesseract 采用原生 C 语言开发,需要 JNI 桥接器才能与 Java 连接。因此,我们的 OCR 解决方案在与 OCR 引擎通信时并非 100% 基于 Java。Qoppa 的 PDF 库和组件中的其他功能包括:将 PDF 转换为图像,以及将识别的扩展名添加到 PDF。我们的 API 支持 hOCR 格式——即 OCR 输出的文件格式。

我们的 API 可以接受 hOCR 输入并将文本添加到 PDF 文档中。可以用其他 OCR 引擎替代 Tesseract。

3.代码示例

public class SampleText {

    public static void main(String[] args) throws Exception {
        QoppaRegister.registerJPDFText();

        PDFText document = new PDFText(new File("resources/input/hello.pdf").getPath() , null);
        String text = document.getText();
        System.out.println("【全部内容为:】\n" + text);
        System.out.println();
        for (int i=0 ; i < document.getPageCount() ; i++) {
            final String pageText = document.getText(i);
            System.out.println("【第" + (i + 1) + "页文本内容:】\n" + pageText);
        }
    }

}

image.png

(科学前的文本)

image.png

(科学后的文本)

4.示例说明

(1)示例使用了jPDFText获取PDF文档的文本内容;

(2)示例中演示了未科学使用时读取到的文本存在较多的DEMO,所谓的内容混淆;

(3)示例中演示了科学使用后的内容被正常获取;

5.其它说明

(1)Qoppa Software推出了15款Java集成开发组件库,,除此之外的其它组件在生成/转换为PDF文档时,应该需要处理文档属性中的“制作工具”

(2)更多的组件需要使用License注册,使用试用版本将会有对应的试用提示信息,比如插入文字水印、图片中被插入水印、内容中被插入DEMO字样的文本,所以科学使用的目的在于单纯使用对应的工具库,不需额外关注License,又不改动Jar文件中的class,同时又恰好没有水印和文本混乱的限制。特别说明:只为单纯的学习摸索与自我突破,商业软件请勿直接使用于生产环境(购买商业授权)

(3)官网提供了对应各个组件的示例代码和组件库的Jar文件下载,未找到有试用Maven库管理组件的形式,需要自行下载相关的组件;

(4)官网的某些页面资料中也有说明还包含上述产品组件范围之外的其它组件,如:OCR等,没有找到详细的示例使用介绍,不作为本次学习摸索的重点;

(5)官网提供的试用组件的Jar文件中的class有经过加密混淆,从class部分入门则难道比较高,本次对于系列组件的摸索在于科学使用方面,对于组件提供的功能广度与深度应用不作过多的摸索;

(6)对各个组件学习摸索的时间并不算太多,发现这么多组件应该不能同时作用于同一个项目中,因为它们不同的组件Jar中提供的class类文件路径存在同名或同类的,存在互相冲突的场景,不知道是否有说明白,以jPDFWriter与jPDFWeb两个组件Jar的截图如下: 

image

(7)相关示例输出文件下载:《jPDFText.zip》;


 点赞


 发表评论

当前回复:作者

 评论列表


留言区