欧美成人精品手机在线观看_69视频国产_动漫精品第一页_日韩中文字幕网 - 日本欧美一区二区

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

一個免費開源可完全離線的OCR工具Umi-OCR(本文附帶封裝教程DEMO源碼)

admin
2024年7月24日 15:39 本文熱度 1131

在《Easy-OCR》一文中,我們詳細描述了OCR的應用場景和Easy-OCR的使用,后續有同學反饋,Easy-OCR的安裝相對較為麻煩,還需要下載模型包,在使用上也以Python命令為主,對新手同事不是太友好。也有同學反饋為什么不用飛漿Paddle,本質上paddle場景主要面向視覺分析,深度學習場景,而且在安裝使用上的難度也不是太低。

所以,今天給大家介紹的是一個不同于Easy-OCR和飛漿Paddle,而是一個無論在部署安裝,還是使用上更加簡單的OCR軟件-Umi-OCR。為了說明這幾個OCR區別,整理了一份對比表如下:

對比項Umi-OCREasy-OCRPaddleOCR
設備要求主要Windows操作系統,Linux(測試中)支持多種操作系統支持多種操作系統
定位OCR設別軟件,底層依賴OCR識別引擎OCR識別引擎OCR識別引擎
易用性圖形化界面,適合非專業用戶,也提供命令行和API接口適合具有一定編程基礎的開發者使用適合具有一定編程基礎的開發者使用
性能性能優化好,底層可采用Paddle引擎,電腦性能足夠情況下速度快效率一般,但是可利用GPU加速性能優化好,支持多種硬件加速
學習難度較低,圖形化界面易于上手中等,需要編程基礎,但API接口簡潔中等,需要編程基礎,對比其他Python庫可能存在學習曲線
安裝部署無需安裝,下載解壓即可使用通過pip安裝,可能需要下載預訓練模型通過pip安裝PaddlePaddle,再安裝PaddleOCR或使用PaddleHub集成
多語言支持支持支持
應用場景截圖OCR、批量OCR、二維碼識別等 文檔數字化、名片信息提取、車牌識別等圖像識別、自然語言處理、推薦系統等 
批量處理支持批量導入圖片進行文字識別,支持多種輸出格式支持批量處理,具體實現需結合API使用支持批量預測,可通過編程實現復雜批處理
離線使用是,完全離線使用是,但需預先下載模型文件是,支持離線


01 
— 
 Umi-OCR 介紹 

一個開源、免費的離線OCR軟件。簡單、易用,開放API。支持截屏/批量導入圖片,PDF文檔識別,排除水印/頁眉頁腳,掃描/生成二維碼。內置多國語言庫。

🏠  項目信息

#Github地址https://github.com/hiroi-sora/Umi-OCR

🚀功能特性

  • 免費:本項目所有代碼開源,完全免費。

  • 方便:解壓即用,離線運行,無需網絡。

  • 高效:自帶高效率的離線OCR引擎,內置多種語言識別庫。

  • 靈活:支持命令行、HTTP接口等外部調用方式。

  • 功能:截圖OCR / 批量OCR / PDF識別 / 二維碼 / 公式識別



02
 Umi-OCR 使用 

Umi-OCR提供了多種下載方式,可以安裝網絡環境自行選擇。下載后,直接解壓使用即可:

# 藍奏云 (國內推薦,免注冊/無限速)https://hiroi-sora.lanzoul.com/s/umi-ocr# Github releasehttps://github.com/hiroi-sora/Umi-OCR/releases/latest# Source Forgehttps://sourceforge.net/projects/umi-ocr
  • 截圖(圖片)OCR

支持屏幕截圖,粘貼圖片,快捷轉文字,支持識別欄編輯文字,允許劃選多個記錄復制。

支持設別后文本后處理,整理OCR結果的排版和順序,使文本更適合閱讀和使用。

  • 批量OCR

對批量導入本地圖片進行識別,支持與截圖OCR一樣的文本后處理功能,可一次性導入幾百張圖片進行任務。

OCR文本后處理支持忽略區域,適用于排除圖片中的不想要的文字。

  • 文檔識別

支持pdf, xps, epub, mobi, fb2, cbz 等格式文檔批量識別,支持設定忽略區域,可用于排除頁眉頁腳的文字。

  • 二維碼識別

截圖/粘貼/拖入本地圖片,讀取其中的二維碼、條形碼,支持19種協議。


03
 Umi-OCR 頁面封裝 

Umi-OCR同時提供了本地命令行和HTTP接口。本次我們主要基于的Umi-OCR接口,將其封裝為一個簡單的B/S架構WEB應用。

# Umi-OCR http接口說明文檔https://github.com/hiroi-sora/Umi-OCR/blob/main/docs/http/README.md

一、開放HTTP接口地址

在全局設置頁中勾選高級設置,允許HTTP服務才能使用HTTP接口,將主機切換到任何可用地址。

二、WEB封裝設計說明

  • 后端:采用Flask 負責處理文件上傳、調用Umi-OCR設別以及對設別后的進行數據格式化。

  • 前端:頁面使用 Bootstrap 進行樣式設計,并通過 AJAX 實現異步數據提交和更新,允許用戶上傳圖片并進行 OCR 識別,用戶可以在頁面地獲取到Umi-OCR識別結果。

三、具體代碼實現

  • 后端 Flask 應用 (umi-ocr.py)代碼:

from flask import Flask, request, render_template, jsonifyimport requestsimport base64import osfrom werkzeug.utils import secure_filenameimport json
app = Flask(__name__)app.config['UPLOAD_FOLDER'] = 'uploads/'  # 確保這個文件夾存在
def format_result(data):    formatted_results = []    for item in data:        result = {            'text': item.get('text', ''),            'score': item.get('score', 0),            'bounding_box': item.get('box', [])        }        formatted_results.append(result)    return formatted_results
@app.route('/', methods=['GET'])def index():    return render_template('index.html')
@app.route('/upload', methods=['POST'])def upload_file():    if request.method == 'POST':        # 獲取上傳的圖片        image_file = request.files['image']        if image_file:            filename = secure_filename(image_file.filename)            image_file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename))            # 讀取圖片內容并轉換為base64編碼            with open(os.path.join(app.config['UPLOAD_FOLDER'], filename), "rb") as image_file:                encoded_image = base64.b64encode(image_file.read()).decode('utf-8')            # 調用OCR接口            response = requests.post('http://xxx.xxx.xxx.xxx:1224/api/ocr', json={'base64': encoded_image})            # URL換成運行umi-ocr的服務器地址,解析響應            if response.status_code == 200:                result = response.json()                result['data'] = format_result(result['data'])  # 格式化數據                return jsonify(result)            else:                return jsonify({'error': 'Failed to connect to OCR service'})    return jsonify({'error': 'No image provided'})
if __name__ == '__main__':    app.run(debug=True, host='0.0.0.0')
  • 前端 HTML頁面(index.html)應用:

<!DOCTYPE html><html lang="zh-CN"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>OCR識別結果展示</title>    <!-- 引入Bootstrap CSS -->    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">    <style>        #results {            margin-top: 20px;        }        .result-text {            font-size: 16px;            color: #333;        }</style></head><body>    <div class="container mt-4">        <h2>OCR識別結果</h2>        <form id="uploadForm" method="post" enctype="multipart/form-data">            <div class="form-group">                <input type="file" class="form-control" name="image" required>            </div>            <button type="submit" class="btn btn-primary">上傳圖片</button>        </form>        <div id="results" class="result-text"></div>    </div>
   <!-- 引入jQuery和Bootstrap JS -->    <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>    <script>        $(document).ready(function() {            $('#uploadForm').submit(function(e) {                e.preventDefault();                var formData = new FormData(this);
               $.ajax({                    url: '/upload',                    type: 'post',                    data: formData,                    contentType: false,                    processData: false,                    success: function(data) {                        if (data.error) {                            $('#results').text(data.error);                        } else if (data.code === 100) {                            // 將所有文本結果拼接并顯示                            var allText = data.data.map(function(item) {                                return item.text;                            }).join('\n');                            $('#results').text(allText);                        } else {                            $('#results').text('識別失敗或未檢測到文本。');                        }                    },                    error: function(xhr, status, error) {                        $('#results').text('請求出錯:' + error);                    }                });            });        });</script></body></html>

四、部署運行
  • 環境要求

#需要python3環境,確保環境中安裝了Flaskpip install Flask easyocr -i https://mirrors.aliyun.com/pypi/simple/
  • 運行程序

# 創建運行目錄mkdir -p /opt/Umi-OCR/uploadsmkdir -p /opt/Umi-OCR/templates# 將umi-ocr.py文件復制至 Umi-OCR目錄mv umi-ocr.py /opt/Umi-OCR/# 將index.html文件復制至Umi-OCR/templates目錄mv index.html /opt/Umi-OCR/templates# 運行程序python umi-ocr.py
 * Running on http://xxx.xxx.xxx.xxx:5000/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger PIN: 379-609-535
  • 訪問 http://hostip:5000,打開頁面

四、使用測試

在頁面上傳圖片,查看識別效果


04
 最后 

當然,上述只是一個簡單的教程,感興趣的同學可以在DEMO之上擴展批量識別等功能。雖然Umi-OCR在使用上主要面向非專業用戶,但是在設計上提供了詳細的API接口和命令行。方便專業的開發人員可以按照需要的場景和應用自行擴展和集成。


該文章在 2024/7/24 15:49:36 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved