精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

基于 Spring Boot3.3 + OCR 實現圖片轉文字功能,你學會了嗎?

開發 前端
在這篇文章中,我們展示了如何使用 EasyOCR 與 Spring Boot 集成實現圖片文字識別。通過 Python 腳本處理 OCR 任務,并在 Spring Boot 應用中處理文件上傳和調用 OCR 腳本,最終將識別結果返回給前端頁面。

在當今數字化信息時代,圖像中的文字信息越來越重要,無論是文檔掃描、名片識別,還是車輛牌照的識別,OCR(Optical Character Recognition,光學字符識別)技術都在各個領域發揮著關鍵作用。本文將介紹如何基于 Spring Boot 框架集成 EasyOCR,實現圖片轉文字的功能。我們將通過實際的代碼示例,詳細講解從前端上傳圖片、后端處理到最終文字識別的全過程。

運行效果:

圖片圖片

識別效果:

圖片圖片

若想獲取項目完整代碼以及其他文章的項目源碼,且在代碼編寫時遇到問題需要咨詢交流,歡迎加入下方的知識星球。

什么是 OCR?

OCR 是一種將圖片中的印刷體或手寫文本轉換為可編輯文本的技術。它廣泛應用于文檔管理系統、車牌識別、票據處理、身份證識別等領域。傳統的 OCR 解決方案通?;趶碗s的機器學習算法,需進行大量的數據訓練。然而,隨著深度學習的快速發展,出現了一些更加靈活且易于使用的 OCR 框架,其中 EasyOCR 就是一個突出的代表。

EasyOCR 框架簡介

EasyOCR 簡介

EasyOCR 是一個由 Jaided AI 開發的開源 OCR 解決方案。它基于 PyTorch 深度學習框架,具有開箱即用、易于集成、支持多語言等特點。與傳統的 OCR 工具相比,EasyOCR 不僅識別速度快,還能處理各種復雜的文本圖像,如彎曲的文本、不同字體、各種語言混合的文本等。

EasyOCR 的特性

  • 多語言支持:EasyOCR 支持 80 多種語言,包括中英雙語、日語、韓語、阿拉伯語等,特別適合需要處理多語言文本的場景。
  • 開源免費:EasyOCR 完全開源,并且在 GitHub 上持續維護和更新,開發者可以免費使用并進行二次開發。
  • 易于集成:只需簡單幾行代碼,即可將 EasyOCR 集成到現有項目中。其 API 設計簡單明了,非常適合快速開發和部署。
  • 高準確率:基于深度學習的模型,EasyOCR 在復雜場景下的文本識別準確率較高,能夠應對彎曲文本、復雜背景等難題。
  • 輕量級:與其他基于深度學習的 OCR 解決方案相比,EasyOCR 更加輕量級,占用資源少,適合嵌入式設備和服務器應用。

環境準備

  1. Python 環境:EasyOCR 是基于 Python 的,因此需要在系統中安裝 Python。
  2. EasyOCR 安裝:使用 pip 安裝 EasyOCR。
pip install easyocr

Spring Boot 項目:我們將創建一個 Spring Boot 項目,并通過 HTTP 請求將圖片傳遞給 Python 腳本進行 OCR 處理。

項目結構

easyocr
|-- src
|   |-- main
|       |-- java
|           |-- com
|               |-- icoderoad
|                   |-- easyocr
|                       |-- EasyOcrApplication.java
|                       |-- controller
|                           |-- OcrController.java
|-- resources
|   |-- application.yml
|-- pom.xml
|-- ocr_script.py

Python OCR 腳本

首先,我們編寫一個 Python 腳本 ocr_script.py,用于接收圖像文件并使用 EasyOCR 進行文字識別。

import easyocr
import sys

def extract_text_from_image(image_path):
    # 初始化 EasyOCR Reader,支持中文和英文
    reader = easyocr.Reader(['ch_sim', 'en'])  # 'ch_sim' 用于簡體中文,'ch_tra' 用于繁體中文
    results = reader.readtext(image_path)
    
    text = ""
    for result in results:
        text += result[1] + "\n"
    return text

if __name__ == "__main__":
    image_path = sys.argv[1]  # 從命令行參數獲取圖片路徑
    text = extract_text_from_image(image_path)
    print(text)  # 輸出識別結果

Spring Boot 配置

pom.xml 配置

添加 spring-boot-starter-web 和 commons-io 依賴,用于創建 REST API 和處理文件操作。

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.11.0</version>
    </dependency>
</dependencies>

application.yml 配置

配置文件上傳的臨時存儲路徑。

server:
  port: 8080
  
spring:
  servlet:
    multipart:
      max-file-size: 10MB
      max-request-size: 10MB
      
ocr:
  python-path: /path/python/bin/python
  script-path: /path/to/ocr_script.py
  upload-dir: /tmp/uploads/

EasyOcrApplication.java

Spring Boot 啟動類。

package com.icoderoad.easyocr;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class EasyocrApplication {

	public static void main(String[] args) {
		SpringApplication.run(EasyocrApplication.class, args);
	}

}

創建配置類

使用 @ConfigurationProperties 注解創建一個配置類,以便將 YAML 文件中的配置注入到 Spring Boot 應用中。

OcrProperties.java

package com.icoderoad.easyocr.config;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "ocr")
public class OcrProperties {

    private String pythonPath;
    private String scriptPath;
    private String uploadDir;
    

    public String getPythonPath() {
		return pythonPath;
	}

	public void setPythonPath(String pythonPath) {
		this.pythonPath = pythonPath;
	}

	public String getScriptPath() {
        return scriptPath;
    }

    public void setScriptPath(String scriptPath) {
        this.scriptPath = scriptPath;
    }

    public String getUploadDir() {
        return uploadDir;
    }

    public void setUploadDir(String uploadDir) {
        this.uploadDir = uploadDir;
    }
}

OcrController.java

控制器用于處理文件上傳和調用 Python 腳本。

package com.icoderoad.easyocr.controller;

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import com.icoderoad.easyocr.config.OcrProperties;

@RestController
@RequestMapping("/api/ocr")
public class OcrController {

    @Autowired
    private OcrProperties ocrProperties;

    @PostMapping("/extract")
    public String extractText(@RequestParam("file") MultipartFile file) {
        try {
            // 保存上傳的文件
            File tempFile = new File(ocrProperties.getUploadDir() + file.getOriginalFilename());
            FileUtils.writeByteArrayToFile(tempFile, file.getBytes());

            // 調用 Python 腳本
            ProcessBuilder processBuilder = new ProcessBuilder(ocrProperties.getPythonPath(), ocrProperties.getScriptPath(), tempFile.getAbsolutePath());
            Process process = processBuilder.start();
            process.waitFor();

            // 讀取輸出
            String output = new String(process.getInputStream().readAllBytes());
            return output;
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
            return "OCR 識別失敗";
        }
    }
}

前端示例

使用 Thymeleaf 模板、Bootstrap 和 JavaScript 創建一個簡單的前端頁面,允許用戶上傳圖片并查看 OCR 結果。

src/main/resources/templates/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>OCR 圖片識別</title>
    <link rel="stylesheet" >
</head>
<body>
    <div class="container">
        <h1 class="mt-5">OCR 圖片識別</h1>
        <form id="uploadForm">
            <div class="form-group">
                <label for="fileInput">選擇圖片文件:</label>
                <input type="file" class="form-control" id="fileInput" name="file" required>
            </div>
            <button type="submit" class="btn btn-primary">上傳并識別</button>
        </form>
        <div class="mt-3">
            <h2>識別結果:</h2>
            <pre id="result">上傳圖片以查看識別結果</pre>
        </div>
    </div>

    <script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
    <script src="/js/app.js"></script>
</body>
</html>

src/main/resources/static/js/app.js

$(document).ready(function() {
    $('#uploadForm').on('submit', function(event) {
        event.preventDefault();

        // 獲取文件輸入
        var fileInput = $('#fileInput')[0].files[0];

        // 檢查是否選擇了文件
        if (!fileInput) {
            alert("請選擇一個文件");
            return;
        }

        // 創建 FormData 對象
        var formData = new FormData();
        formData.append('file', fileInput);

        // 使用 jQuery 的 AJAX 發送 POST 請求
        $.ajax({
            url: '/api/ocr/extract',
            type: 'POST',
            data: formData,
            contentType: false, // 不設置內容類型,讓瀏覽器自動處理
            processData: false, // 不處理數據,讓它保持原樣
            success: function(result) {
                // 在頁面上顯示識別結果
                $('#result').text(result);
            },
            error: function(xhr, status, error) {
                console.error('Error:', error);
                alert('識別失敗,請稍后重試。');
            }
        });
    });
});

總結

在這篇文章中,我們展示了如何使用 EasyOCR 與 Spring Boot 集成實現圖片文字識別。通過 Python 腳本處理 OCR 任務,并在 Spring Boot 應用中處理文件上傳和調用 OCR 腳本,最終將識別結果返回給前端頁面。這種方法結合了 EasyOCR 強大的文字識別能力與 Spring Boot 靈活的 Web 開發特性,為大家提供了一個完整的解決方案。

責任編輯:武曉燕 來源: 路條編程
相關推薦

2022-07-11 09:00:37

依賴配置文件Mybati

2024-01-02 07:04:23

2022-07-08 08:17:48

Spring接口配置

2022-06-27 08:16:34

JSON格式序列化

2023-11-06 07:25:51

Spring配置應用程序

2022-06-16 07:50:35

數據結構鏈表

2022-04-26 08:41:54

JDK動態代理方法

2024-07-29 10:35:44

KubernetesCSI存儲

2022-09-26 08:49:11

Java架構CPU

2024-07-31 08:26:47

2023-05-05 08:29:15

Spring后臺服務器

2024-01-19 08:25:38

死鎖Java通信

2023-07-26 13:11:21

ChatGPT平臺工具

2023-01-10 08:43:15

定義DDD架構

2024-02-04 00:00:00

Effect數據組件

2024-01-02 12:05:26

Java并發編程

2023-08-01 12:51:18

WebGPT機器學習模型

2024-02-01 15:03:14

RocketMQKosmos高可用

2025-09-03 04:11:00

2024-03-12 08:37:32

asyncawaitJavaScript
點贊
收藏

51CTO技術棧公眾號

欧美日韩在线国产| 国产九九热视频| 三级视频在线| 麻豆国产精品777777在线| 久久精品国产69国产精品亚洲 | 蜜臀久久99精品久久久久久| 精品久久在线| 精品国产91久久久| 在线成人性视频| 三级在线观看| 国产成人精品免费视频网站| 国产精品h片在线播放| 免费网站观看www在线观| 国产欧美久久一区二区三区| 日韩欧美一二三| 中文字幕第21页| 丁香花电影在线观看完整版| 国产精品视频一二| 国内视频一区二区| 99热这里精品| 日本欧美一区二区三区乱码| 97精品视频在线| 外国一级黄色片| 欧美中文一区二区| 精品视频在线观看日韩| 久久久国产精品久久久| 免费视频观看成人| 色94色欧美sute亚洲线路一ni | 黄页网站在线| 成人免费在线视频观看| 欧洲亚洲一区二区三区四区五区| 亚洲va欧美va| 紧缚奴在线一区二区三区| 国产精品www色诱视频| 日韩欧美不卡视频| 亚洲天堂黄色| 久久久久久美女| 亚洲国产成人精品综合99| 久久免费大视频| 在线成人一区二区| 在线观看国产精品一区| 日韩欧美中文字幕电影| 欧美精品一区二区在线播放| 中文字幕在线视频一区二区三区| 亚洲图片小说区| 欧美日韩在线精品一区二区三区激情| 99热成人精品热久久66| 永久免费毛片在线播放| 激情亚洲一区二区三区四区| 久久久久久免费看| 1024在线看片你懂得| 午夜欧美2019年伦理| 成人免费在线网| 99riav视频在线观看| 亚洲成人一区二区在线观看| 亚洲色欲久久久综合网东京热| 精品精品导航| 亚洲第一精品在线| 久久久久久久久久久视频| 日韩精品美女| 91久久精品一区二区三区| 男女爽爽爽视频| 国产精品videossex撒尿| 欧美少妇性性性| 日日干夜夜操s8| www一区二区三区| 日韩欧美国产电影| 屁屁影院国产第一页| 日韩伦理一区二区三区| 亚洲欧美日韩中文视频| 纪美影视在线观看电视版使用方法| 成人6969www免费视频| 中文字幕欧美日韩va免费视频| 在线观看天堂av| 欧美国产精品| 2019中文字幕免费视频| 嫩草影院一区二区三区| 久久66热re国产| 国产成人亚洲欧美| 青青草视频免费在线观看| 国产精品天美传媒| 青草网在线观看| 亚洲欧美一区二区三区| 欧美日韩久久久| 激情小说欧美色图| 国内精品伊人久久久| 久久精品99无色码中文字幕| 国产精品99精品| 天堂影院一区二区| 91亚洲精华国产精华| 人成网站在线观看| 中文在线一区二区| 国产69精品久久久久999小说| 欧美成人ⅴideosxxxxx| 欧美一级视频精品观看| 四虎永久免费影院| 91av精品| 国产精品草莓在线免费观看| 国产成人麻豆精品午夜在线 | 久久综合五月| 1区1区3区4区产品乱码芒果精品| 少妇高潮一区二区三区99小说| 国产亚洲欧美色| 亚洲精品蜜桃久久久久久| 色猫猫成人app| 欧美精品一区二区三区久久久| 1024手机在线观看你懂的| 亚洲激情另类| 91香蕉亚洲精品| 免费毛片在线| 亚洲成人手机在线| 中文字幕66页| 国产亚洲电影| 97视频免费观看| 亚洲成a人片在线| 国产精品视频在线看| 国产网站免费在线观看| 综合中文字幕| 久久精品国产v日韩v亚洲 | 欧美高清www午色夜在线视频| 中文乱码人妻一区二区三区视频| 亚洲无中文字幕| 国产精品国内视频| 欧美精品少妇| 精品成人在线视频| 年下总裁被打光屁股sp | 在线中文字幕网站| 久久精品一二三| 日本韩国欧美在线观看| 日韩视频一区二区三区四区| 中文字幕精品av| 欧美一级黄视频| 91捆绑美女网站| 欧美精品99久久| 色天天色综合| 欧美一级免费视频| 三级国产在线观看| 欧美视频在线看| 亚洲日本久久久| 好看的日韩av电影| 国产精品免费在线| 国产精品69xx| 精品三级在线看| 精品无码黑人又粗又大又长| 国产精品456| 蜜桃视频一区二区在线观看| 国产一区 二区| 欧美成年人视频| 99久久国产热无码精品免费| 亚洲色图.com| 中文字幕久久久久久久| 欧美成人午夜| 91传媒免费看| 黑人极品ⅴideos精品欧美棵| 精品美女在线播放| av资源免费观看| 久久综合久久综合久久综合| 91看片就是不一样| 日本欧美国产| 成人欧美一区二区三区在线 | 99久久综合| 亚洲一区制服诱惑| 国产蜜臀在线| 亚洲国产精品va在线看黑人动漫| 久久久久久久久久免费视频| www国产精品av| 国产又猛又黄的视频| 国产精品7m凸凹视频分类| 91系列在线观看| 超碰在线资源| 亚洲色图在线观看| 一级黄色片在线看| 一区二区三区四区激情| 亚洲一级av无码毛片精品 | 亚洲图色中文字幕| 欧美日韩免费| 免费av在线一区二区| 成人av色网站| 欧美精品久久久久久久久久| 欧美日韩影视| 欧美一级国产精品| 日本韩国欧美中文字幕| 中文字幕av免费专区久久| 欧美熟妇精品一区二区| 久久福利一区| www.激情网| 啪啪亚洲精品| 亚洲综合中文字幕在线观看| 色是在线视频| 久久精品国产精品亚洲| 偷拍自拍在线| 欧美一区二区三区视频| 亚洲天堂一区在线观看| 亚洲女同ⅹxx女同tv| 日本aaa视频| 国产成人综合精品三级| 日本男人操女人| 黄色精品一区| 亚洲精品一区国产精品| 秋霞影视一区二区三区| 91视频国产精品| 黄瓜视频成人app免费| 理论片在线不卡免费观看| 毛片免费在线播放| 亚洲激情视频在线播放| 一区二区 亚洲| 色呦呦日韩精品| 久久影院一区二区| 日韩理论片网站| 四虎成人免费影院| 91丨porny丨户外露出| 91人妻一区二区三区| 蜜桃久久久久久久| 男人日女人bb视频| 136国产福利精品导航网址| 在线视频欧美一区| 精品视频亚洲| 欧美xxxx黑人又粗又长精品| 91麻豆精品激情在线观看最新 | 国产成人自拍视频在线观看| 欧美理论片在线播放| 精品久久久91| 91美女视频在线| 一区二区三区视频在线| 深夜视频在线免费| 亚洲精品第一国产综合精品| 成人激情四射网| 欧美一区二区三区免费视频| 伊人色综合久久久| 欧美在线视频日韩| 日本丰满少妇做爰爽爽| 日本久久一区二区| 免费精品一区二区| 欧洲av一区二区嗯嗯嗯啊| 国产视频1区2区| 日韩欧美成人精品| 欧美一二三区视频| 欧美性猛交xxxx乱大交极品| 国产五月天婷婷| 午夜一区二区三区视频| 国产一级二级三级| 亚洲va国产天堂va久久en| 久久精品人妻一区二区三区| 一区二区三区视频在线看| 91插插插插插插| 樱花影视一区二区| 久草视频免费在线| 亚洲午夜激情av| 国产精品第56页| 精品动漫一区二区| 国产污污视频在线观看| 色综合久久88色综合天天| 国产女主播喷水视频在线观看| 日韩欧美在线中文字幕| 一二三区免费视频| 欧美日韩在线电影| 国产人妖在线播放| 欧美成人精品福利| 人妻妺妺窝人体色www聚色窝| 日韩一级大片在线| 日韩中文字幕观看| 国产午夜精品麻豆| 9i精品一二三区| 久久国产精品99国产精| 国产乱码在线| 国产97在线播放| 精品国产美女a久久9999| 亚洲999一在线观看www| 国产96在线亚洲| 免费国产一区二区| 香蕉精品视频在线观看| 国产欧美久久久久| 玖玖在线精品| 在线免费看污网站| 99精品欧美一区二区蜜桃免费| 91视频免费观看网站| 亚洲色图视频网站| 日本三级小视频| 欧美日韩国产123区| 蜜桃91麻豆精品一二三区| 日韩经典中文字幕| 免费av网站在线看| 91av在线不卡| 97久久中文字幕| 国模精品一区二区三区| 日韩在线观看| 欧美极品欧美精品欧美| 久久丁香综合五月国产三级网站 | 久久久久久毛片免费看 | av在线播放网| 欧美另类老女人| 日本免费久久| 国产91视觉| 不卡视频在线| 欧美日韩黄色一级片| 六月丁香婷婷色狠狠久久| 国产在线不卡av| 亚洲欧洲精品一区二区三区不卡| 国产 欧美 日韩 在线| 欧美日韩成人在线一区| 日本天堂在线| 欧美成在线视频| 国产精品xxx| 欧美日本亚洲| 精品动漫3d一区二区三区免费版| 黄色三级视频在线| 成人av片在线观看| 日韩在线观看视频一区二区| 色综合久久综合网97色综合| 亚洲国产精品欧美久久| www高清在线视频日韩欧美| 久久sese| 国产综合av一区二区三区| 综合在线视频| 久热精品在线播放| 国产农村妇女精品| 999这里只有精品| 欧美精品一区二区三区蜜臀 | 一片黄亚洲嫩模| 国产精品久久久午夜夜伦鲁鲁| 亚洲日本成人网| 极品av在线| 国产日韩欧美综合精品| 亚洲视频中文| wwwxxx色| 亚洲黄色免费电影| 国产suv精品一区二区69| 日韩视频在线免费观看| 91九色综合| 日韩hmxxxx| 日韩国产在线一| 免费看黄色的视频| 欧美性色xo影院| 欧美性孕妇孕交| 欧美一区二三区| 欧美亚洲tv| 成人黄色片视频| 久久人人97超碰com| 亚洲 欧美 中文字幕| 亚洲欧美日韩精品久久奇米色影视| 韩国成人二区| 久久99精品国产一区二区三区| 9久re热视频在线精品| 久久性爱视频网站| 天天影视网天天综合色在线播放| 神马午夜一区二区| 97超视频免费观看| 妖精一区二区三区精品视频 | 视频一区在线免费看| 亚洲人成人77777线观看| 青娱乐精品视频| 免费黄色激情视频| 日韩欧美色电影| hd国产人妖ts另类视频| 久中文字幕一区| 免费一级片91| 91嫩草|国产丨精品入口| 精品国产乱码91久久久久久网站| 日本乱码一区二区三区不卡| 欧美人xxxxx| 日本美女一区二区三区视频| 91免费在线看片| 欧美一区日韩一区| 97超碰免费在线| 欧美最大成人综合网| 麻豆视频一区二区| 久久久久香蕉视频| 亚洲国产精品女人久久久| 色天使综合视频| 性欧美18一19内谢| av电影在线观看不卡| 欧美性猛交bbbbb精品| 中文字幕精品网| 一本一道久久a久久| 凹凸国产熟女精品视频| 国产精品网曝门| 乱精品一区字幕二区| 国产91色在线|免| 午夜久久久久| 蜜桃无码一区二区三区| 欧美日韩大陆一区二区| 暧暧视频在线免费观看| 日韩国产精品一区二区三区| 精品亚洲成av人在线观看| 天堂网一区二区三区| 丝袜一区二区三区| 美女视频免费精品| 日韩欧美国产片| 亚洲成人在线免费| 欧美精品日韩少妇| 久久免费看av| 国产老肥熟一区二区三区| 69亚洲精品久久久蜜桃小说| 久色乳综合思思在线视频| 国产99精品一区| 亚洲av午夜精品一区二区三区| 在线免费一区三区| wwww在线观看免费视频| 在线天堂一区av电影| 久久亚洲一级片|