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

Java如何識(shí)別圖片或掃描PDF中的文字詳解

 更新時(shí)間:2025年01月09日 09:48:11   作者:nuclear2011  
這篇文章主要介紹了Java如何識(shí)別圖片或掃描PDF中文字的相關(guān)資料,介紹了Java中使用Spire.OCRforJava庫來識(shí)別圖片和掃描PDF文件中的文字,需要的朋友可以參考下

前言

圖片和掃描文件通常以非文本格式存在,這使得其中的文字信息難以直接編輯、搜索或復(fù)制。為了解決這個(gè)問題,光學(xué)字符識(shí)別(OCR)技術(shù)應(yīng)運(yùn)而生。OCR通過分析圖像中的文字區(qū)域并將其轉(zhuǎn)換為可編輯的文本,從而使用戶能夠輕松提取信息。如今,OCR已被廣泛應(yīng)用于文檔數(shù)字化、數(shù)據(jù)提取和文字搜索等多個(gè)領(lǐng)域,為各行各業(yè)帶來了便利。這篇博客將探討如何在Java中通過OCR技術(shù)識(shí)別圖片和掃描PDF文件中的文字。

使用工具

首先,我們需要選擇一個(gè)適當(dāng)?shù)腛CR庫。在Java中有許多OCR庫,本文所使用的是Spire.OCR for Java。在使用該庫前,我們需要完成以下兩個(gè)步驟:

1. 在程序中引入該庫的JAR

你可以通過官方地址下載該庫的JAR包或通過Maven倉庫拉取,依賴如下:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependency>
    <groupId>e-iceblue</groupId>
    <artifactId>spire.ocr</artifactId>
    <version>1.9.19</version>
</dependency>

2. 下載Spire.OCR for Java的模型

Spire.OCR for Java提供了支持Win 64位和Linux 64位操作系統(tǒng)的兩種模型。我們需要根據(jù)自己的系統(tǒng)下載適合的模型:

下載完成后,將它解壓并保存到特定的目錄下。

完成以上兩個(gè)步驟后,我們就可以使用該庫實(shí)現(xiàn)識(shí)別圖片和掃描PDF中的文字。

Java識(shí)別圖片中的文字

以下是使用Spire.OCR for Java識(shí)別圖片中的文字的主要步驟:

  • 創(chuàng)建OcrScanner類的實(shí)例。
  • 創(chuàng)建 ConfigureOptions 類的實(shí)例來設(shè)置掃描器配置。
  • 使用ConfigureOptions.setLanguage()方法指定文本識(shí)別的語言,默認(rèn)設(shè)置為English(支持語言:English,Chinese,Chinesetraditional,F(xiàn)rench,German,Japanese和Korean)。
  • 使用ConfigureOptions.setModelPath()方法指定模型的路徑。
  • 使用OcrScanner.ConfigureDependencies()方法將配置應(yīng)用于掃描器。
  • 使用OcrScanner.scan()方法識(shí)別圖片中的文本。
  • 使用OcrScanner.getText()方法從 OcrScanner 對(duì)象獲取已識(shí)別的文本。
  • 將獲取的文本寫入文本文件。

以下代碼示例展示了如何識(shí)別圖片中的文本并將結(jié)果保存到文本文件中:

import com.spire.ocr.ConfigureOptions;
import com.spire.ocr.OcrException;
import com.spire.ocr.OcrScanner;

import java.io.FileWriter;
import java.io.IOException;

public class ExtractTextFromImage {

    public static void main(String[] args) {
        // 從圖片中識(shí)別文字
        String scannedText = scanTextFromImage("測(cè)試.png", "Chinese", "E:\\win-x64");

        // 保存識(shí)別出的文字到文件
        saveTextToFile(scannedText, "圖片文字.txt");
    }

    /**
     * 方法:從圖片中識(shí)別文字
     * @param imagePath 圖片路徑
     * @param language OCR語言,支持語言包括 English, Chinese, Chinesetraditional, French, German, Japanese 和 Korean
     * @param modelPath OCR模型路徑
     * @return 識(shí)別出的文字
     */
    private static String scanTextFromImage(String imagePath, String language, String modelPath) {
        try {
            // 創(chuàng)建OcrScanner類的對(duì)象
            OcrScanner scanner = new OcrScanner();
            // 設(shè)置掃描器配置
            ConfigureOptions configureOptions = new ConfigureOptions();
            // 指定文本識(shí)別的語言
            configureOptions.setLanguage(language);
            // 指定模型的路徑
            configureOptions.setModelPath(modelPath);
            // 將配置應(yīng)用于掃描器
            scanner.ConfigureDependencies(configureOptions);

            // 識(shí)別圖片中的文本
            scanner.scan(imagePath);
            // 獲取識(shí)別出的文本
            return scanner.getText().toString();
        } catch (OcrException e) {
            System.out.println("OCR 文字識(shí)別時(shí)發(fā)生錯(cuò)誤。");
            e.printStackTrace();
            return "";
        }
    }

    /**
     * 方法:將識(shí)別出的文字保存到文件
     * @param text 識(shí)別出的文字
     * @param filePath 保存文件路徑
     */
    private static void saveTextToFile(String text, String filePath) {
        // 將獲取的文本寫入文本文件
        try (FileWriter writer = new FileWriter(filePath)) {
            writer.write(text);
            System.out.println("文本已成功保存到 " + filePath);
        } catch (IOException e) {
            System.out.println("保存文本文件時(shí)發(fā)生錯(cuò)誤。");
            e.printStackTrace();
        }
    }
}

原始圖片和識(shí)別結(jié)果:

Java識(shí)別掃描PDF中的文字

Spire.OCR for Java庫并不支持直接處理PDF,因此要從掃描的 PDF 中提取文本,我們首先需要將 PDF 文檔轉(zhuǎn)換為圖片。對(duì)于此任務(wù),我們將使用Spire.PDF for Java庫。轉(zhuǎn)換完成后,再利用 Spire.OCR 從生成的圖片中提取文本。

你可以通過該地址下載Spire.PDF for Java的JAR包或者通過Maven倉庫拉取:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependency>
    <groupId>e-iceblue</groupId>
    <artifactId>spire.pdf</artifactId>
    <version>10.10.0</version>
</dependency>

以下代碼示例展示了如何識(shí)別掃描PDF中的文本并將結(jié)果保存到文本文件中:

import com.spire.ocr.ConfigureOptions;
import com.spire.ocr.OCRImageFormat;
import com.spire.ocr.OcrException;
import com.spire.ocr.OcrScanner;
import com.spire.pdf.PdfDocument;

import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.*;

public class ExtractTextFromScannedPDF {

    public static void main(String[] args) throws OcrException, IOException {
        // 打開掃描PDF文檔
        PdfDocument pdf = new PdfDocument();
        pdf.loadFromFile("掃描.pdf");

        // 從掃描PDF文檔中識(shí)別文字并將結(jié)果保存到文本文件
        for (int pageIndex = 0; pageIndex < pdf.getPages().getCount(); pageIndex++) {
            BufferedImage image = convertPdfPageToImage(pdf, pageIndex);
            String scannedText = recognizeTextFromImage(image, "Chinese", "E:\\win-x64");

            // 將識(shí)別出的文本保存到文件
            saveTextToFile(scannedText, "掃描PDF文字.txt");
        }
    }

    /**
     * 方法:將PDF頁面轉(zhuǎn)換為圖片
     * @param pdf PDF文檔對(duì)象
     * @param pageIndex 頁碼索引,從0開始
     * @return 轉(zhuǎn)換后的BufferedImage對(duì)象
     * @throws IOException 如果轉(zhuǎn)換過程中發(fā)生I/O錯(cuò)誤
     */
    private static BufferedImage convertPdfPageToImage(PdfDocument pdf, int pageIndex) throws IOException {
        return pdf.saveAsImage(pageIndex);
    }

    /**
     * 方法:從圖片中識(shí)別文字
     * @param image 要識(shí)別的BufferedImage對(duì)象
     * @param language OCR語言,支持語言包括 English, Chinese, Chinesetraditional, French, German, Japanese 和 Korean
     * @param modelPath OCR模型路徑
     * @return 識(shí)別出的文字
     * @throws OcrException 如果OCR識(shí)別過程中發(fā)生錯(cuò)誤
     * @throws IOException 如果轉(zhuǎn)換BufferedImage為InputStream時(shí)發(fā)生I/O錯(cuò)誤
     */
    private static String recognizeTextFromImage(BufferedImage image, String language, String modelPath) throws OcrException, IOException {
        // 將BufferedImage轉(zhuǎn)換為InputStream
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        ImageIO.write(image, "PNG", os);
        InputStream inputStream = new ByteArrayInputStream(os.toByteArray());

        // 配置并初始化OCR掃描器
        OcrScanner scanner = new OcrScanner();
        ConfigureOptions configureOptions = new ConfigureOptions();
        configureOptions.setLanguage(language); // 設(shè)置OCR識(shí)別語言
        configureOptions.setModelPath(modelPath); // 設(shè)置OCR模型路徑
        scanner.ConfigureDependencies(configureOptions); // 應(yīng)用配置

        // 識(shí)別文本
        scanner.Scan(inputStream, OCRImageFormat.Png);
        return scanner.getText().toString(); // 返回識(shí)別出的文本
    }

    /**
     * 方法:將識(shí)別出的文本保存到文件
     * @param text 識(shí)別出的文字
     * @param filePath 保存文件的路徑
     */
    private static void saveTextToFile(String text, String filePath) {
        try (FileWriter writer = new FileWriter(filePath)) {
            writer.write(text);
            System.out.println("文本已成功保存到 " + filePath);
        } catch (IOException e) {
            System.out.println("保存文本文件時(shí)發(fā)生錯(cuò)誤。");
            e.printStackTrace();
        }
    }
}

注意事項(xiàng)

OCR的準(zhǔn)確性很大程度上受到圖片質(zhì)量的影響。使用清晰、對(duì)比度良好,不模糊、傾斜的圖片,可以提高識(shí)別結(jié)果的準(zhǔn)確性。不同OCR庫可能對(duì)不同語言和字體的支持程度不同,一些特定語言或字體可能識(shí)別效果較差。因此在識(shí)別完成后,最好再人工校正一遍。

總結(jié)

到此這篇關(guān)于Java如何識(shí)別圖片或掃描PDF中文字的文章就介紹到這了,更多相關(guān)Java識(shí)別圖片或掃描PDF文字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

乐亭县| 四会市| 东城区| 十堰市| 天祝| 无为县| 武宣县| 磴口县| 南阳市| 安塞县| 嘉义县| 昌乐县| 绵阳市| 塔河县| 滦平县| 阿坝县| 怀集县| 金山区| 体育| 博乐市| 米泉市| 沈阳市| 大姚县| 平泉县| 泗水县| 昔阳县| 金寨县| 揭东县| 吴堡县| 芦溪县| 连平县| 沙湾县| 沛县| 岱山县| 赤城县| 和平区| 漳浦县| 陆川县| 旅游| 彰化市| 南溪县|