从 PDF 中提取文本

在 Java 中从 PDF 中提取文本

我们都知道 PDF 文件是最重要且使用最广泛的数字格式之一,用于可靠地呈现和交换文档,独立于软件、硬件或操作系统。然而,在某些情况下,我们可能有兴趣从大型 PDF 文件中获取摘录。或者,我们可能需要在线将 PDF 保存为文本。因此,在本文中,我们将探讨有关如何使用 Java REST API 开发 PDF 到文本转换器的详细信息。

PDF 生成器 API

使用模板或使用我们的 REST API 从头开始生成 PDF 文档。同时,API 还使您能够编辑 PDF 文件并将其转换为其他支持的格式。您还可以利用从 PDF 中提取文本、使用 Java Cloud SDK 解密和合并 PDF 文件的好处。现在,为了使用 Aspose.PDF Cloud SDK for Java,我们需要在我们的 Java 应用程序中添加它的引用,方法是在 pom.xml(maven 构建类型项目)中包含以下详细信息。

<repositories> 
    <repository>
        <id>aspose-cloud</id>
        <name>artifact.aspose-cloud-releases</name>
        <url>http://artifact.aspose.cloud/repo</url>
    </repository>   
</repositories>

<dependencies>
    <dependency>
        <groupId>com.aspose</groupId>
        <artifactId>aspose-cloud-pdf</artifactId>
        <version>21.11.0</version>
        <scope>compile</scope>
    </dependency>
</dependencies>

安装后,我们需要在 Cloud Dashboard 上创建一个免费帐户并获取个性化的客户端凭据。

使用Java从PDF中提取文本

让我们探索使用 Java 云 SDK 从 PDF 中提取文本的详细信息。在此示例中,我们将使用以下输入 PdfWithTable.pdf文件。

pdf转文本ocr

图片 1:- 用于 PDF 到文本提取的输入文件。

pdf转文本ocr

图片 2:- 从 PDF 预览中提取文本

// 有关更多示例,请访问 https://github.com/aspose-pdf-cloud/aspose-pdf-cloud-java/tree/master/Examples/src/main/java/com/aspose/asposecloudpdf/examples

try
    {
    // 从 https://dashboard.aspose.cloud/ 获取 ClientID 和 ClientSecret
    String clientId = "bb959721-5780-4be6-be35-ff5c3a6aa4a2";
    String clientSecret = "4d84d5f6584160cbd91dba1fe145db14";
		    
    // 创建 PdfApi 的实例
    PdfApi pdfApi = new PdfApi(clientSecret,clientId);
    // 输入 PDF 文档的名称
    String name = "PdfWithTable.pdf";
		        
    // 读取输入PDF文件的内容
    File file = new File(name); 
    // 上传PDF到云存储
    pdfApi.uploadFile("input.pdf", file, null);
		        
    // 左下角的 X 坐标
    Double LLX = 500.0;
    // Y - 左下角的坐标。
    Double LLY = 500.0;
    // X - 右上角的坐标。
    Double URX = 800.0;
    // Y - 右上角的坐标。
    Double URY = 800.0;
			       
    // 调用 API 将 PDF 转换为文本
    TextRectsResponse response = pdfApi.getText("input.pdf", LLX, LLY, URX, URY, null, null, null, null, null);    
		    
    // 遍历单个文本出现
    for(int counter=0; counter <=response.getTextOccurrences().getList().size()-1; counter++)
    {
        // 在控制台中写入文本内容
        System.out.println(response.getTextOccurrences().getList().get(counter).getText());
    }
		  
    System.out.println("Extract Text from PDF successful !");
    }catch(Exception ex)
    {
        System.out.println(ex);
    }

现在让我们尝试理解上面指定的代码片段:

PdfApi pdfApi = new PdfApi(clientSecret,clientId);

创建 PdfApi 实例,同时将个性化凭据作为参数传递。

File file = new File(name); 
pdfApi.uploadFile("input.pdf", file, null);

使用 File 对象读取输入的 PDF,并使用 PdfAPI 类的 uploadFile(…) 方法将其上传到云存储。请注意,文件是使用 uploadFile 方法中使用的名称上传的。

TextRectsResponse response = pdfApi.getText("input.pdf", LLX, LLY, URX, URY, null, null, null, null, null);    

现在调用 getText(..) 方法,我们在其中指定输入 PDF 文件的名称、我们需要从中提取文本内容的页面上的矩形尺寸,并将提取的内容返回给 TextRectsResponse 对象。

response.getTextOccurrences().getList().get(counter).getText()

最后,为了打印提取的文本内容,我们将遍历所有 TextOccurance 并将它们显示在控制台中。

使用 cURL 命令将 PDF 转为文本

除了 Java 代码片段,我们还可以使用 cURL 命令执行 pdftotext 操作。现在,此方法的先决条件之一是使用以下命令生成 JWT 访问令牌(基于客户端凭据)。

curl -v "https://api.aspose.cloud/connect/token" \
-X POST \
-d "grant_type=client_credentials&client_id=bb959721-5780-4be6-be35-ff5c3a6aa4a2&client_secret=4d84d5f6584160cbd91dba1fe145db14" \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Accept: application/json"

生成 JWT 后,请执行以下命令从云存储中已有的 PDF 文件中提取文本。

curl -v -X GET "https://api.aspose.cloud/v3.0/pdf/input.pdf/text?splitRects=true&LLX=0&LLY=0&URX=800&URY=800" \
-H  "accept: application/json" \
-H  "authorization: Bearer <JWT Token>"

小建议

寻找 PDF 到文本的免费应用程序!请尝试使用我们的 PDF 解析器

结束语

总之,对于那些希望实现数据处理和分析需求自动化的人来说,使用 Java 从 PDF 文件中提取文本可能是一个强大的解决方案。在本指南的帮助下,您现在拥有坚实的基础,可以轻松实现您自己的基于 Java 的 PDF 文档文本提取解决方案。无论您是希望提取文本用于数据分析、机器学习还是任何其他目的,Java 都能提供一个灵活可靠的平台来满足您的需求。因此,请继续测试您新获得的技能!

如果您有兴趣探索 API 提供的其他令人兴奋的功能,请探索 产品文档。最后,如果您在使用 API 时遇到任何问题,或有任何相关疑问,请随时通过免费的产品支持论坛与我们联系。

相关文章

请访问以下链接以了解更多信息: