最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Java提取PDF中的文字的三種常見方法

 更新時間:2025年06月30日 09:54:05   作者:2401_89793006  
這篇文章主要介紹了Java中提取PDF文本的三種方法:ApachePDFBox(普通PDF,輕量易用)、iText(復雜格式,功能強大)、TesseractOCR(掃描版,需OCR識別),并給出各場景下的推薦選擇,需要的朋友可以參考下

使用 Java 提取 PDF 中的文字

在日常開發(fā)中,我們經(jīng)常需要從 PDF 文件中提取文本,比如用于文檔分析、搜索功能、數(shù)據(jù)挖掘等。本篇文章將介紹三種常見的方法:

  • Apache PDFBox(適用于大部分 PDF)
  • iText(支持復雜格式 PDF)
  • Tesseract OCR(適用于掃描版 PDF)

1. 使用 Apache PDFBox 提取 PDF 文本

1.1 添加 Maven 依賴

<dependency>
    <groupId>org.apache.pdfbox</groupId>
    <artifactId>pdfbox</artifactId>
    <version>2.0.27</version>
</dependency>

1.2 代碼示例

import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.text.PDFTextStripper;
import java.io.File;
import java.io.IOException;

public class PDFTextExtractor {
    public static void main(String[] args) {
        String pdfPath = "sample.pdf";  // 替換為你的 PDF 文件路徑
        try (PDDocument document = PDDocument.load(new File(pdfPath))) {
            PDFTextStripper pdfStripper = new PDFTextStripper();
            String text = pdfStripper.getText(document);
            System.out.println("提取的文本內容:\n" + text);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

1.3 說明

  • PDDocument.load(File):加載 PDF 文件。
  • PDFTextStripper.getText(document):提取文本。
  • 適用于大部分 PDF,但如果 PDF 采用了圖片格式(掃描版),無法提取。

2. 使用 iText 提取 PDF 文本

2.1 添加 Maven 依賴

<dependency>
    <groupId>com.itextpdf</groupId>
    <artifactId>itext7-core</artifactId>
    <version>7.1.17</version>
</dependency>

2.2 代碼示例

import com.itextpdf.kernel.pdf.*;
import com.itextpdf.kernel.pdf.canvas.parser.PdfTextExtractor;
import java.io.File;
import java.io.IOException;

public class ITextPDFTextExtractor {
    public static void main(String[] args) {
        String pdfPath = "sample.pdf";  // 替換為你的 PDF 文件路徑
        try (PdfDocument pdfDoc = new PdfDocument(new PdfReader(pdfPath))) {
            StringBuilder extractedText = new StringBuilder();
            for (int i = 1; i <= pdfDoc.getNumberOfPages(); i++) {
                extractedText.append(PdfTextExtractor.getTextFromPage(pdfDoc.getPage(i))).append("\n");
            }
            System.out.println("提取的文本內容:\n" + extractedText);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

2.3 說明

  • PdfReader(pdfPath):加載 PDF 文件。
  • PdfTextExtractor.getTextFromPage(pdfDoc.getPage(i)):逐頁提取文本。
  • 適用于大部分 PDF,支持更復雜的文本解析。

3. 使用 Tesseract OCR 處理掃描版 PDF

如果 PDF 是掃描版(僅包含圖片),需要 OCR 識別文本。

3.1 添加 Maven 依賴

<dependency>
    <groupId>net.sourceforge.tess4j</groupId>
    <artifactId>tess4j</artifactId>
    <version>4.5.5</version>
</dependency>

3.2 代碼示例

import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.TesseractException;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.rendering.PDFRenderer;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

public class OCRPDFExtractor {
    public static void main(String[] args) throws IOException, TesseractException {
        String pdfPath = "scanned.pdf";  // 替換為你的 PDF 文件路徑
        PDDocument document = PDDocument.load(new File(pdfPath));
        PDFRenderer pdfRenderer = new PDFRenderer(document);
        Tesseract tesseract = new Tesseract();
        tesseract.setDatapath("tessdata");  // 設置 Tesseract 訓練數(shù)據(jù)路徑
        tesseract.setLanguage("eng");  // 設置語言

        StringBuilder extractedText = new StringBuilder();
        for (int i = 0; i < document.getNumberOfPages(); i++) {
            BufferedImage image = pdfRenderer.renderImage(i);
            extractedText.append(tesseract.doOCR(image)).append("\n");
        }
        document.close();
        System.out.println("OCR 提取的文本內容:\n" + extractedText);
    }
}

3.3 說明

  • PDFRenderer.renderImage(i):將 PDF 頁轉換為圖片。
  • tesseract.doOCR(image):執(zhí)行 OCR 識別文本。
  • 適用于無可選文本的掃描版 PDF。

4. 總結

方法適用場景主要特點
Apache PDFBox普通 PDF輕量、易用,適用于大部分 PDF
iText復雜格式 PDF功能強大,適合更復雜的文本解析
Tesseract OCR掃描版 PDF需要 OCR 識別,適用于無文本層的 PDF

推薦選擇:

  • 普通文本 PDF:使用 PDFBoxiText
  • 復雜格式 PDF:推薦 iText。
  • 掃描版 PDF:使用 Tesseract OCR 進行識別。

到此這篇關于使用Java提取PDF中的文字的三種常見方法的文章就介紹到這了,更多相關Java提取PDF文字內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • SpringCloud Gateway路由表配置實現(xiàn)小結

    SpringCloud Gateway路由表配置實現(xiàn)小結

    SpringCloudGateway通過路由表將請求轉發(fā)到不同的服務或地址,每個路由包含id、uri、predicates和filters等字段,下面就來介紹一下SpringCloud Gateway路由如何配置,感興趣的可以了解一下
    2026-01-01
  • SpringBoot啟動報錯Failed?to?configure?a?DataSource解決方案

    SpringBoot啟動報錯Failed?to?configure?a?DataSource解決方案

    SpringBoot應用啟動時出現(xiàn)Failed?to?configure?a?DataSource錯誤,通常是由于數(shù)據(jù)庫配置缺失或不當導致,解決方案分三種情況,下文將介紹對應方法,根據(jù)實際需求選擇對應方案即可解決問題,需要的朋友可以參考下
    2025-10-10
  • GateWay動態(tài)路由與負載均衡詳細介紹

    GateWay動態(tài)路由與負載均衡詳細介紹

    這篇文章主要介紹了GateWay動態(tài)路由與負載均衡,GateWay支持自動從注冊中心中獲取服務列表并訪問,即所謂的動態(tài)路由
    2022-11-11
  • SpringCloud使用FFmpeg對視頻壓縮處理的代碼示例

    SpringCloud使用FFmpeg對視頻壓縮處理的代碼示例

    在現(xiàn)代的視頻處理系統(tǒng)中,壓縮視頻以減小存儲空間、加快傳輸速度是一項非常重要的任務,FFmpeg作為一個強大的開源工具,廣泛應用于音視頻的處理,包括視頻的壓縮和格式轉換等,本文將通過Java代碼示例,向您展示如何使用FFmpeg進行視頻壓縮,并介紹相關參數(shù)的設置
    2024-11-11
  • Java通過導出超大Excel文件解決內存溢出問題

    Java通過導出超大Excel文件解決內存溢出問題

    導出excel是咱Java開發(fā)的必備技能,下面這篇文章主要給大家介紹了關于Java通過導出超大Excel文件解決內存溢出問題的相關資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2021-09-09
  • SpringBoot MyBatis簡單快速入門例子

    SpringBoot MyBatis簡單快速入門例子

    MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。這篇文章主要介紹了SpringBoot MyBatis快速入門-簡單例子,需要的朋友可以參考下
    2021-07-07
  • Spring獲取Cookie和Session(@CookieValue()和@SessionAttribute())

    Spring獲取Cookie和Session(@CookieValue()和@SessionAttribute())

    本文主要介紹了Spring獲取Cookie和Session(@CookieValue()和@SessionAttribute()),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2026-01-01
  • Java基礎之Thymeleaf的簡單使用

    Java基礎之Thymeleaf的簡單使用

    這篇文章主要介紹了Java基礎之Thymeleaf的簡單使用,文中有非常詳細的代碼示例,對正在學習java基礎的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • 深入剖析springBoot中的@Scheduled執(zhí)行原理

    深入剖析springBoot中的@Scheduled執(zhí)行原理

    這篇文章主要介紹了springBoot中的@Scheduled執(zhí)行原理,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • springboot3整合遠程調用的過程解析

    springboot3整合遠程調用的過程解析

    遠程過程調用主要分為:服務提供者,服務消費者,通過連接對方服務器進行請求交互,來實現(xiàn)調用效果,這篇文章主要介紹了springboot3整合遠程調用,需要的朋友可以參考下
    2023-06-06

最新評論

乌什县| 台前县| 旅游| 雷州市| 沙洋县| 怀柔区| 海丰县| 惠州市| 奉化市| 湘潭市| 沧州市| 临泉县| 梧州市| 舟曲县| 天柱县| 揭阳市| 尼木县| 泌阳县| 郴州市| 衡阳市| 通辽市| 韩城市| 西吉县| 连州市| 固阳县| 开阳县| 青田县| 阜新市| 荥经县| 忻州市| 九龙坡区| 招远市| 金溪县| 漳州市| 彩票| 榕江县| 兴城市| 虞城县| 五原县| 鸡东县| 丁青县|