Java 實現OCR掃描/識別圖片文字

来源:https://www.cnblogs.com/Yesi/p/18108357
-Advertisement-
Play Games

圖片內容一般無法編輯,如果想要讀取圖片中的文本,我們需要用到OCR工具。本文將介紹如何在Java中實現OCR識別讀取圖片中的文字。 所需工具: IDEA Spire.OCR for Java - Java OCR組件,支持識別多種語言、字體,可讀取JPG、PNG、GIF、BMP 和 TIFF 等常用 ...


圖片內容一般無法編輯,如果想要讀取圖片中的文本,我們需要用到OCR工具。本文將介紹如何在Java中實現OCR識別讀取圖片中的文字。

所需工具:

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

        產品包下載鏈接:https://www.e-iceblue.cn/Downloads/Spire-OCR-JAVA.html

        或從Maven倉庫導入:

<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>

 

  • 其餘依賴文件。按操作系統下載對應文件後,解壓縮至指定的文件路徑。

       Linux

   Windows x64

 

Java OCR識別圖片文本的實現步驟

1. 在IDEA中新建一個項目並導入Spire.OCR.jar。

2. 將剛纔下載解壓縮後的 “dependencies” 文件夾複製到IDEA項目目錄下。

3.確保導入以上所需依賴後,運行以下代碼實現掃描讀取圖片中的文本。

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

示例圖片:

OCR圖片掃描結果:

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 問題描述 問題和 unordered_set 有關,相關代碼如下: //列印unordered_set的所有值 void printSet(const std::unordered_set<std::string> &data) { int index = 0; auto it = data.beg ...
  • 本文介紹在Anaconda環境下,安裝Python讀取.xls格式表格文件的庫xlrd的方法。 xlrd是一個用於讀取Excel文件的Python庫,下麵是xlrd庫的一些主要特點和功能: 讀取Excel文件:xlrd可以打開和讀取Excel文件,並提取其中的數據和元數據。 支持多種數據類型:xlr ...
  • 很長時間沒做,忙於考研和實習,久違的的拾起了演算法。做了很長時間,其實總體思路還是很簡單的,但滿分不知道為什麼就是到不了,又因為網上很多答案包括柳神的都是c++,無法參透,姑且只能這樣了。 Given a pair of positive integers, for example, 6 and 11 ...
  • 目錄log 日誌庫標準簡單示例使用方法庫的開發者應用開發者日誌庫開發者使用 log4rs添加依賴配置文件運行項目參考文章 log 日誌庫標準 log 是 Rust 的日誌門面庫,由官方積極維護可以放心使用。它是Rust的日誌門面,相應的日誌 API 已成為事實上的標準被其它日誌框架所使用,有了日誌門 ...
  • 當我們的項目中引入了 Shiro 後,帶有中文的請求路徑會被攔截並返回 400 的錯誤。一般我們的請求路徑是不會帶有中文字元,但當我們訪問靜態資源時那些文件是有可能是中文名稱的。 ...
  • 拓展閱讀 RSS 一種簡潔優雅的數據訂閱方式 RSSHub Everything is RSSible 開源、易於使用且可擴展的 RSS 提要生成器 RSS 介紹 RSS(Really Simple Syndication)是一種用於發佈網站更新的標準格式。 它允許用戶獲取網站內容的最新更新,而無需 ...
  • 在項目正式上線之前,我們通常需要通過壓測來評估當前系統能夠支撐的請求量、排查可能存在的隱藏bug;壓力測試(壓測)是確保系統在高負載情況下仍能穩定運行的重要步驟。通過模擬高併發場景,可以評估系統的性能瓶頸、可靠性和穩定性,進而優化系統架構和資源配置。 目錄一、壓力測試相關術語二、安裝wrk2.1 使 ...
  • 本文全面探索了容器編排技術的核心概念、工具和高級應用,包括Docker Compose、Kubernetes等主要平臺及其高級功能如網路和存儲管理、監控、安全等。此外,文章還探討了這些技術在實際應用中的案例,提供了對未來趨勢的洞見。 關註【TechLeadCloud】,分享互聯網架構、雲服務技術的全 ...
一周排行
    -Advertisement-
    Play Games
  • 隨著Aspire發佈preview5的發佈,Microsoft.Extensions.ServiceDiscovery隨之更新, 服務註冊發現這個屬於老掉牙的話題解決什麼問題就不贅述了,這裡主要講講Microsoft.Extensions.ServiceDiscovery(preview5)以及如何 ...
  • 概述:通過使用`SemaphoreSlim`,可以簡單而有效地限制非同步HTTP請求的併發量,確保在任何給定時間內不超過20個網頁同時下載。`ParallelOptions`不適用於非同步操作,但可考慮使用`Parallel.ForEach`,儘管在非同步場景中謹慎使用。 對於併發非同步 I/O 操作的數量 ...
  • 1.Linux上安裝Docken 伺服器系統版本以及內核版本:cat /etc/redhat-release 查看伺服器內核版本:uname -r 安裝依賴包:yum install -y yum-utils device-mapper-persistent-data lvm2 設置阿裡雲鏡像源:y ...
  • 概述:WPF界面綁定和渲染大量數據可能導致性能問題。通過啟用UI虛擬化、非同步載入和數據分頁,可以有效提高界面響應性能。以下是簡單示例演示這些優化方法。 在WPF中,當你嘗試綁定和渲染大量的數據項時,性能問題可能出現。以下是一些可能導致性能慢的原因以及優化方法: UI 虛擬化: WPF提供了虛擬化技術 ...
  • 引言 上一章節介紹了 TDD 的三大法則,今天我們講一下在單元測試中模擬對象的使用。 Fake Fake - Fake 是一個通用術語,可用於描述 stub或 mock 對象。 它是 stub 還是 mock 取決於使用它的上下文。 也就是說,Fake 可以是 stub 或 mock Mock - ...
  • 為.net6在CentOS7上面做準備,先在vmware虛擬機安裝CentOS 7.9 新建CentOS764位的系統 因為CentOS8不更新了,所以安裝7;簡單就一筆帶過了 選擇下載好的操作系統的iso文件,下載地址https://mirrors.aliyun.com/centos/7.9.20 ...
  • 經過前面幾篇的學習,我們瞭解到指令的大概分類,如:參數載入指令,該載入指令以 Ld 開頭,將參數載入到棧中,以便於後續執行操作命令。參數存儲指令,其指令以 St 開頭,將棧中的數據,存儲到指定的變數中,以方便後續使用。創建實例指令,其指令以 New 開頭,用於在運行時動態生成並初始化對象。方法調用指... ...
  • LiteDB 是一個輕量級的嵌入式 NoSQL 資料庫,其設計理念與 MongoDB 類似,但它是完全使用 C# 開發的,因此與 C# 應用程式的集成非常順暢。與 SQLite 相比,LiteDB 提供了 NoSQL(即鍵值對)的數據存儲方式,並且是一個開源且免費的項目。它適用於桌面、移動以及 We ...
  • 1 開源解析和拆分文檔 第三方的工具去對文件解析拆分,去將我們的文件內容給提取出來,並將我們的文檔內容去拆分成一個小的chunk。常見的PDF word mark down, JSON、HTML。都可以有很好的一些模塊去把這些文件去進行一個東西去提取。 優勢 支持豐富的文檔類型 每種文檔多樣化選擇 ...
  • OOM是什麼?英文全稱為 OutOfMemoryError(記憶體溢出錯誤)。當程式發生OOM時,如何去定位導致異常的代碼還是挺麻煩的。 要檢查OOM發生的原因,首先需要瞭解各種OOM情況下會報的異常信息。這樣能縮小排查範圍,再結合異常堆棧、heapDump文件、JVM分析工具和業務代碼來判斷具體是哪 ...