精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

播放一区二区| 免费动漫网站在线观看| 欧美粗暴jizz性欧美20| 精品福利一区二区三区免费视频| 国产精品333| 国产福利免费在线观看| 国产一区二区电影| 日本中文字幕成人| 国产一二三四区| 西瓜成人精品人成网站| 欧美一区二区视频在线观看2022| www.日本在线播放| 岛国大片在线观看| 国产91精品免费| 国产精品69久久| 久操免费在线视频| 久久视频在线| 亚洲精品视频网上网址在线观看| 激情久久综合网| 欧美理论影院| 亚洲图片有声小说| 一区二区三区不卡在线| 肉丝一区二区| 成人污污视频在线观看| 国产精品爽爽爽| 免费在线观看黄网站| 欧美r级电影| 亚洲天堂免费视频| 免费看91视频| 精品视频一二| 欧美日韩国产成人在线免费| 日本精品免费在线观看| 宅男网站在线免费观看| 国产精品免费aⅴ片在线观看| 精品欧美一区二区久久久伦| 国内老熟妇对白xxxxhd| 日本欧美一区二区三区乱码| 97超级碰碰碰久久久| 欧美日韩大片在线观看| 天天射天天综合网| 正在播放欧美视频| www在线观看免费视频| 美女av一区| 精品99999| 精品一区二区三区四区五区六区| 伊人久久大香线蕉综合影院首页| 欧美影院一区二区| 国产无套粉嫩白浆内谢的出处| av免费不卡国产观看| 亚洲综合一二三区| 国产免费内射又粗又爽密桃视频| 粗大黑人巨茎大战欧美成人| 中文字幕亚洲一区二区av在线| 亚洲欧洲国产精品久久| av播放在线观看| 欧美国产成人精品| 亚洲不卡1区| 欧美在线一卡| 国产亚洲一区字幕| 婷婷四月色综合| yw193.com尤物在线| 欧美国产一区二区在线观看| 日本午夜精品一区二区| 9色在线视频网站| 国产精品久久久久久久久搜平片 | 亚洲欧美一二三区| 国产欧美91| 国产精品av免费在线观看| 成人黄色片在线观看| 久久精品理论片| 亚洲综合精品一区二区| 高h调教冰块play男男双性文| 国产超碰在线一区| 精品国产一区二区三区麻豆免费观看完整版| 亚洲精品字幕在线观看| 成人av网站在线| 欧美污视频久久久| 中国日本在线视频中文字幕| 中文字幕字幕中文在线中不卡视频| 欧美日韩午夜爽爽| 国产精品电影| 欧美在线制服丝袜| 下面一进一出好爽视频| 麻豆成人入口| 日韩在线视频国产| 久久久久久久久久久久久久免费看 | 97成人资源| 欧美日韩你懂得| 99热这里只有精品2| 日韩aaa久久蜜桃av| 中文字幕亚洲精品| 免费毛片一区二区三区| 三级在线观看一区二区| 亚洲a级在线观看| 天天干天天插天天操| 日本一区二区久久| 激情五月婷婷六月| 四虎影视4hu4虎成人| 日韩精品自拍偷拍| 蜜桃久久精品成人无码av| 欧美成人精品| 国产精品久久电影观看| 亚洲爱情岛论坛永久| 国产人成亚洲第一网站在线播放| 成年在线观看视频| 高清成人在线| 精品欧美一区二区在线观看 | 日本一区二区三区视频| 欧美极品欧美精品欧美视频| 中国a一片一级一片| 成人免费视频免费观看| 一区二区视频国产| 另类专区亚洲| 亚洲福利在线视频| 国产免费久久久久| 日本强好片久久久久久aaa| 国产亚洲一区二区三区在线播放 | 国内精品久久久久久久久电影网| 欧美美最猛性xxxxxx| 亚洲av无码不卡| 99精品视频一区二区三区| 大桥未久一区二区三区| 成人国产在线| 亚洲深夜福利视频| 国产成人无码精品亚洲| 成人综合激情网| 国产一二三四五| 亚洲ww精品| 在线观看精品自拍私拍| 国产精品人人人人| av在线播放一区二区三区| 无码毛片aaa在线| 欧美a一级片| 一级做a爰片久久毛片美女图片| 日韩av黄色片| 成人午夜视频网站| 国产爆乳无码一区二区麻豆| 电影91久久久| 久久精品国产亚洲精品2020| 中文在线免费观看| 国产日韩欧美高清在线| 日本三级免费观看| 欧美日日夜夜| 日韩美女免费视频| 欧美日韩影视| 色老汉av一区二区三区| 日韩精品卡通动漫网站| 日韩视频在线一区二区三区| 国产精品成人一区二区三区| 久草在线视频网站| 亚洲成色777777女色窝| 国产精品第56页| 不卡一区中文字幕| 欧美老熟妇喷水| 要久久爱电视剧全集完整观看| 欧美一级片免费在线| 瑟瑟在线观看| 一本色道久久加勒比精品| 国产手机在线观看| 性色一区二区| 午夜老司机精品| 日韩三区四区| 欧美黑人xxxx| 日韩av高清在线| 欧洲精品在线观看| 亚洲AV成人无码网站天堂久久| 久久66热re国产| 男女啪啪免费观看| 久久动漫网址| 日韩免费精品视频| 日本三级在线播放完整版| 91精品国产麻豆国产自产在线 | 欧美性xxxx图片| 视频一区在线播放| 丰满女人性猛交| a级日韩大片| 日产精品久久久一区二区福利| 黄色毛片在线观看| 777xxx欧美| 国产第100页| 中文字幕欧美国产| 91丨porny丨九色| 久久精品导航| 成年人黄色在线观看| 国产精品tv| 国产精品国产三级国产专播精品人 | 中文字幕二三区不卡| 免费不卡av网站| 亚洲一区国产| 亚洲国产精品影视| 日韩在线黄色| 成人a在线观看| 末成年女av片一区二区下载| 精品国产网站地址| 婷婷五月综合久久中文字幕| 欧美日韩一二三区| 久久香蕉精品视频| 国产精品乱码一区二三区小蝌蚪| 麻豆短视频在线观看| 日韩二区三区四区| www污在线观看| 99久久www免费| 久久大片网站| 欧美黄视频在线观看| 国产精品白丝jk喷水视频一区| 黄网av在线| 中文字幕在线日韩| 日韩午夜影院| 欧美成人乱码一区二区三区| 中国一级特黄视频| 欧美日韩国产一区中文午夜| 国语对白在线播放| 国产精品毛片高清在线完整版| 久久久久久久人妻无码中文字幕爆| 蜜臀av一区二区三区| 337p粉嫩大胆噜噜噜鲁| 亚洲图片在线| 黑人巨大国产9丨视频| 狠狠操综合网| 欧美婷婷久久| 一本色道久久综合亚洲精品酒店 | 亚洲在线免费播放| 久久嫩草捆绑紧缚| 国产午夜精品久久久久久久 | 麻豆av免费在线| 欧美午夜一区| 黄色污污在线观看| 99re6这里只有精品| 日本一区高清在线视频| 欧美xxxx在线| 国产欧美一区二区在线播放| 日本免费精品| 亚洲最大av在线| 国产一区二区av在线| 91精品视频在线| 日韩福利在线观看| 国产精品久久综合av爱欲tv| 日本综合字幕| 欧美综合激情网| 性国裸体高清亚洲| 欧洲s码亚洲m码精品一区| а√天堂8资源中文在线| 久久久久久久999| 国产美女一区视频| 欧美极品少妇与黑人| 丁香花电影在线观看完整版| 欧美日韩国产二区| 爱看av在线入口| 性视频1819p久久| 僵尸再翻生在线观看| 91av视频在线| 毛片免费看不卡网站| 国产精品18久久久久久首页狼| 99久久精品一区二区成人| 国产精品91一区| 国产精品久久乐| 成人中文字幕+乱码+中文字幕| 9999精品| 丁香五月网久久综合| 噜噜噜狠狠夜夜躁精品仙踪林| 国产精品一区二区免费| 欧美a大片欧美片| 欧美黑人xxxxx| 98精品久久久久久久| 300部国产真实乱| 亚洲精品韩国| 国产自偷自偷免费一区| 毛片av一区二区三区| 污污视频在线免费| 成人福利视频在线| 一区二区黄色片| 国产精品不卡一区二区三区| 欧美成人精品一区二区免费看片 | 中文字幕在线观看国产| 91精品国产乱码久久蜜臀| 少妇高潮一区二区三区99小说| 亚洲精品自拍第一页| 超碰97在线免费观看| 九九九久久久久久| 免费成人动漫| 成人激情视频在线观看| 精品深夜福利视频| 视频一区国产精品| 亚洲午夜一级| 亚洲免费av一区二区三区| 国产乱码字幕精品高清av| 91精品小视频| 国产精品不卡在线| 久久露脸国语精品国产91| 欧美日韩精品福利| 婷婷在线免费观看| 搡老女人一区二区三区视频tv| 超碰97国产精品人人cao| 国产精品视频精品| 老司机凹凸av亚洲导航| 亚洲国产精品一区二区第一页| 欧美人成在线| 免费涩涩18网站入口| 国产成人精品免费一区二区| www色com| 午夜伦理一区二区| 91九色蝌蚪91por成人| 日韩精品在线免费观看| a天堂中文在线官网在线| 国产精品h在线观看| 精品在线网站观看| 五月天色婷婷综合| 久久久噜噜噜久久狠狠50岁| 亚洲熟女乱综合一区二区| 国产欧美视频一区二区三区| 日本天堂在线视频| 日韩亚洲欧美中文三级| 成年午夜在线| 91精品国产成人www| 欧州一区二区三区| 亚洲一区二区高清视频| 久久精品在线| 免费的av网站| 亚洲综合一区二区| a级片在线播放| 中文字幕精品视频| 三级成人在线| 鲁丝一区鲁丝二区鲁丝三区| 伊人成人在线视频| 成人在线短视频| 国产精品福利一区二区三区| 91porny九色| 亚洲女人被黑人巨大进入| 国产精品一区二区日韩| 97人人干人人| 国产精品theporn| 最好看的中文字幕| 亚洲乱码中文字幕| av av片在线看| 久久久精品欧美| 白嫩亚洲一区二区三区| 亚洲开发第一视频在线播放| 日韩电影在线观看网站| 最新中文字幕视频| 狠狠色狠狠色综合日日小说| 日本美女一级视频| 午夜精品久久久99热福利| 77成人影视| 免费超爽大片黄| www..com久久爱| 影音先锋在线国产| 国产午夜精品久久久| 一区二区三区短视频| 日本一区二区三区免费观看 | 国产精品久久77777| 日韩欧美二区| 中文字幕精品一区二区三区在线| 亚洲欧洲一区二区在线播放| 97人妻人人澡人人爽人人精品| 久久精视频免费在线久久完整在线看| 日韩欧乱色一区二区三区在线| 中文精品视频一区二区在线观看| 国内精品第一页| 清纯粉嫩极品夜夜嗨av| 亚洲电影在线看| 欧美羞羞视频| 中文字幕久精品免| 国产精品一区二区不卡| 日本少妇性生活| 亚洲视频免费一区| 色综合久久久| 免费的一级黄色片| 99精品视频在线观看免费| 国产99久久精品一区二区300| 亚洲国产高清国产精品| 极品少妇xxxx偷拍精品少妇| 国产十六处破外女视频| 亚洲福利小视频| 精品三区视频| 日本一二三区视频在线| www.日韩av| 免费在线不卡av| 欧美日韩成人黄色| 天海翼亚洲一区二区三区| 欧美第一页浮力影院| 亚洲制服欧美中文字幕中文字幕| 精品资源在线看| 成人在线国产精品| 一区二区国产在线观看| 纪美影视在线观看电视版使用方法| 666欧美在线视频| 无遮挡爽大片在线观看视频| 一本色道久久99精品综合| 懂色中文一区二区在线播放| 欧产日产国产69| 蜜臀久久99精品久久久无需会员 | 久久久久久久综合狠狠综合| 国产精品国产一区二区三区四区| 久久久久久久91| 四虎成人av| 国产人妻人伦精品1国产丝袜 | 天天综合永久入口| 国产视频999| 久久成人一区| xxxx 国产|