欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java中實現(xiàn)OCR識別讀取圖片中的文字

 更新時間:2024年04月01日 09:25:39   作者:Eiceblue  
圖片內(nèi)容一般無法編輯,如果想要讀取圖片中的文本,我們需要用到OCR工具,本文將介紹如何在Java中實現(xiàn)OCR識別讀取圖片中的文字,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下

所需工具:

  • IDEA
  • Spire.OCR for Java - Java OCR組件,支持識別多種語言、字體,可讀取JPG、PNG、GIF、BMP 和 TIFF 等常用圖片中的文本信息。

產(chǎn)品包下載鏈接:下載 | Spire.OCR for Java

或從Maven倉庫導(dǎo)入:

<repositories>
    <repository>
        <id>com.e-iceblue</id>
        <name>e-iceblue</name>
        <url>https://repo.e-iceblue.cn/repository/maven-public/</url>
    </repository>
</repositories>
<dependencies>
    <dependency>
        <groupId>e-iceblue</groupId>
        <artifactId>spire.ocr</artifactId>
        <version>1.9.0</version>
    </dependency>
</dependencies>
  • 其余依賴文件。按操作系統(tǒng)下載對應(yīng)文件后,解壓縮至指定的文件路徑。

Linux

Windows x64

提取碼:nw77

Java OCR識別圖片文本的實現(xiàn)步驟

1. 在IDEA中新建一個項目并導(dǎo)入Spire.OCR.jar。

2. 將剛才下載解壓縮后的 “dependencies” 文件夾復(fù)制到IDEA項目目錄下。

3.確保導(dǎo)入以上所需依賴后,運行以下代碼實現(xiàn)掃描讀取圖片中的文本。

import com.spire.ocr.OcrScanner;
import java.io.*;
 
public class ReadImage {
    public static void main(String[] args) throws Exception {
        //指定依賴文件的路徑
        String dependencies = "F:\\dependencies\\";
        //指定要需要掃描的圖片的路徑
        String imageFile = "圖片.png";
        //指定輸出文件的路徑
        String outputFile = "讀取圖片.txt";
 
        //創(chuàng)建OcrScanner對象,并設(shè)置其依賴文件路徑
        OcrScanner scanner = new OcrScanner();
        scanner.setDependencies(dependencies);
 
        //掃描指定的圖像文件
        scanner.scan(imageFile);
 
        //獲取掃描的文本內(nèi)容
        String scannedText = scanner.getText().toString();
 
        //創(chuàng)建輸出文件對象
        File output = new File(outputFile);
        //如果輸出文件已經(jīng)存在,則將其刪除
        if (output.exists()) {
            output.delete();
        }
        //創(chuàng)建BufferedWriter對象來將掃描的文本內(nèi)容寫入輸出文件
        BufferedWriter writer = new BufferedWriter(new FileWriter(outputFile));
        writer.write(scannedText);
        writer.close();
    }
}

示例圖片:

OCR圖片掃描結(jié)果:

OCR識別流程

概括

傳統(tǒng)的OCR基于圖像處理(二值化、連通域分析、投影分析等)和統(tǒng)計機器學(xué)習(Adaboost、SVM),過去20年間在印刷體和掃描文檔上取得了不錯的效果。傳統(tǒng)的印刷體OCR解決方案整體流程如圖。

在這里插入圖片描述

從輸入圖像到給出識別結(jié)果經(jīng)歷了圖像預(yù)處理、文字行提取和文字行識別三個階段。

圖像預(yù)處理

  • 二值化:由于彩色圖像所含信息量過于巨大,在對圖像中印刷體字符進行識別處理前,需要對圖像進行二值化處理,使圖像只包含黑色的前景信息和白色的背景信息,提升識別處理的效率和精確度
  • 圖像降噪:由于待識別圖像的品質(zhì)受限于輸入設(shè)備、環(huán)境、以及文檔的印刷質(zhì)量,在對圖像中印刷體字符進行識別處理前,需要根據(jù)噪聲的特征對待識別圖像進行去噪處理,提升識別處理的精確度
  • 傾斜校正:由于掃描和拍攝過程涉及人工操作,輸入計算機的待識別圖像或多或少都會存在一些傾斜,在對圖像中印刷體字符進行識別處理前,就需要進行圖像方向檢測,并校正圖像方向。

在這里插入圖片描述

文字檢測

文字檢測主要有兩條線,兩步法和一步法。

  • 兩步法:faster-rcnn.
  • 一步法:yolo。相比于兩步法,一步法速度更快,但是accuracy有損失。

文字檢測按照文字的角度分。

  • 水平文字檢測:四個自由度,類似于物體檢測。水平文字檢測比較好的算法是CTPN。
  • 傾斜文字檢測:文本框是不規(guī)則的四邊形,八個自由度。傾斜文字檢測個人比較喜歡的方法是CVPR的EAST和Seglink。

在這里插入圖片描述

文本識別

在以前的OCR任務(wù)中,識別過程分為兩步:單字切割和分類任務(wù)。

現(xiàn)今基于深度學(xué)習的端到端OCR技術(shù)有兩大主流技術(shù):CRNN OCR和attention OCR。

其實這兩大方法主要區(qū)別在于最后的輸出層(翻譯層),即怎么將網(wǎng)絡(luò)學(xué)習到的序列特征信息轉(zhuǎn)化為最終的識別結(jié)果。

這兩大主流技術(shù)在其特征學(xué)習階段都采用了CNN+RNN的網(wǎng)絡(luò)結(jié)構(gòu),CRNN OCR在對齊時采取的方式是CTC算法,而attention OCR采取的方式則是attention機制。

在這里插入圖片描述

網(wǎng)絡(luò)結(jié)構(gòu)包含三部分,從下到上依次為:

  • 卷積層,使用CNN,作用是從輸入圖像中提取特征序列;
  • 循環(huán)層,使用RNN,作用是預(yù)測從卷積層獲取的特征序列的標簽(真實值)分布;
  • 轉(zhuǎn)錄層,使用CTC,作用是把從循環(huán)層獲取的標簽分布通過去重整合等操作轉(zhuǎn)換成最終的識別結(jié)果;

在這里插入圖片描述

到此這篇關(guān)于Java中實現(xiàn)OCR識別讀取圖片中的文字的文章就介紹到這了,更多相關(guān)Java OCR識別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論