paddle ocr本地化部署進行文字識別

一、Paddle 簡介

1. 基本概念

Paddle(全稱?PaddlePaddle,飛槳)是百度開發的?開源深度學習平臺,也是中國首個自主研發、功能豐富、技術領先的工業級深度學習平臺。它覆蓋了深度學習從數據準備、模型訓練、模型部署到預測的全流程,旨在幫助開發者快速實現 AI 應用。

2. 核心特點
  • 全場景覆蓋:支持云端、邊緣端、移動端等多硬件環境,適配 CPU、GPU、FPGA 等多種芯片。
  • 易用性與高效性:提供簡潔的 API 和動態圖機制(如 PyTorch 風格的編程體驗),降低開發門檻;同時支持靜態圖優化,提升推理效率。
  • 豐富的工具與生態
    • 模型庫:包含計算機視覺、自然語言處理、語音等領域的預訓練模型(如 ERNIE、PP-YOLO 等)。
    • 開發工具鏈:支持自動并行、混合精度訓練、模型壓縮(剪枝、量化)等高級功能。
    • 社區與文檔:提供詳細的教程、示例和活躍的開發者社區。
3. 應用場景
  • 計算機視覺:圖像分類、目標檢測、語義分割、OCR 等。
  • 自然語言處理:文本分類、機器翻譯、對話系統等。
  • 語音與音頻:語音識別、語音合成等。
  • 工業與科研:智能制造、自動駕駛、醫療影像分析等。

二、Paddle OCR 簡介

1. 基本概念

Paddle OCR?是基于?PaddlePaddle 平臺開發的?光學字符識別(OCR)工具庫,專注于文本檢測、文本識別及多語言文字處理,支持中英文、數字、日文、韓文等多語言場景,廣泛應用于文檔掃描、票據識別、車牌識別、直播字幕提取等領域。

2. 技術架構

Paddle OCR 采用?端到端(End-to-End)的深度學習架構,主要包含以下模塊:

  • 文本檢測:定位圖像中的文本區域(如 EAST、DB 算法)。
  • 文本識別:識別文本區域中的字符(如 CRNN、STAR-Net、RARE 等算法)。
  • 后處理:對識別結果進行校正(如基于語言模型的糾錯)。
3. 核心功能
  • 多語言支持:支持中、英、日、韓、法、德等多種語言,以及豎排文本、彎曲文本(如弧形標識)的識別。
  • 多場景適配
    • 通用場景:印刷體文本(如文檔、書籍)、手寫體文本(部分支持)。
    • 特殊場景:票據(如發票、身份證)、車牌、街景文字(低光照、模糊圖像)等。
  • 高性能部署
    • 支持 CPU/GPU/ARM 等硬件,提供輕量級模型(如 PP-OCR Mobile),適合移動端和嵌入式設備。
    • 支持多后端部署(如 Paddle Inference、Paddle Lite、Paddle.js),滿足實時性需求。
4. 優勢
  • 高精度:在公開數據集(如 ICDAR、CTW1500)上表現領先,部分場景準確率超過 95%。
  • 易用性:提供預訓練模型、命令行工具和 Python SDK,支持一鍵安裝和快速部署。
  • 可定制化:支持自定義數據集訓練,適配特定領域(如醫療、金融)的文字識別需求。
5. 典型應用場景
  • 辦公自動化:掃描文檔電子化、表格識別、合同文本提取。
  • 智慧金融:銀行卡號識別、發票驗真、銀行單據處理。
  • 智慧城市:車牌識別、交通標志識別、公共設施文字標注。
  • 移動應用:拍照翻譯、名片識別、直播實時字幕生成。

三、Paddle 與 Paddle OCR 的關系

  • Paddle 是底層平臺:提供深度學習框架、工具鏈和計算能力。
  • Paddle OCR 是上層應用:基于 Paddle 實現具體的 OCR 功能,依賴 Paddle 的模型訓練和推理能力。
  • 生態協同:Paddle 的模型壓縮、自動調參等功能可直接優化 Paddle OCR 的性能,形成技術閉環。

四 環境搭建

python環境搭建參考linux使用pyenv安裝python環境-CSDN博客

# 安裝Flask、NumPy
pip install flask numpy# 安裝OpenCV(cv2)
pip install opencv-python-headless
pip install paddlepaddle -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install paddleocr -i https://pypi.tuna.tsinghua.edu.cn/simple

?python代碼,新建ocr_server.py,寫入以下代碼,這段代碼會生成一個服務,監聽5000端口,接收base64圖片,進行識別,然后把圖片里面的文字返回

from flask import Flask, request, jsonify
from paddleocr import PaddleOCR
import base64
import numpy as np
import cv2
import jsonapp = Flask(__name__)@app.route('/ocr', methods=['POST'])
def ocr_api():data = request.jsonimage_b64 = data.get('image')if not image_b64:return jsonify({"error": "No image provided"}), 400# 解碼 Base64 圖像img_bytes = base64.b64decode(image_b64)img_np = np.frombuffer(img_bytes, dtype=np.uint8)img = cv2.imdecode(img_np, flags=1)ocr = PaddleOCR(use_angle_cls=True, lang='ch')  # 加載中文模型# 執行 OCRresult = ocr.ocr(img, cls=True)print(result)# 提取識別文本text_list = []for line in result[0]:text = line[1][0]text_list.append(text)# 組合為JSON格式output = {"text": text_list}# 轉為JSON字符串json_output = json.dumps(output, ensure_ascii=False, indent=2)return json_outputif __name__ == '__main__':app.run(host='0.0.0.0', port=5000)
# 服務器要求
# 2核4G內存以上
# 格式:nohup python3 腳本路徑 > 輸出文件 2>&1 &,啟動服務
nohup python3 ocr_server.py > output.log 2>&1 &

調用方java代碼,這段代碼讀取一張圖片,轉成base64,然后通過http調用ocr_server.py的接口,其他語言如js,python等都能實現類似效果

public class OCRClient {public static void main(String[] args) throws Exception {long time = System.currentTimeMillis();String imagePath = "d:\\test3.jpg";String urlStr = "http://localhost:5000/ocr";// 讀取圖片并轉為 Base64byte[] imageBytes = Files.readAllBytes(Paths.get(imagePath));String base64Image = Base64.getEncoder().encodeToString(imageBytes);// 發送 POST 請求URL url = new URL(urlStr);HttpURLConnection conn = (HttpURLConnection) url.openConnection();conn.setRequestMethod("POST");conn.setRequestProperty("Content-Type", "application/json");conn.setDoOutput(true);String jsonInputString = "{\"image\": \"" + base64Image + "\"}";try (OutputStream os = conn.getOutputStream()) {byte[] input = jsonInputString.getBytes("utf-8");os.write(input, 0, input.length);}// 讀取響應try (BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"))) {StringBuilder response = new StringBuilder();String responseLine;while ((responseLine = br.readLine()) != null) {response.append(responseLine.trim());}System.out.println("OCR Result:\n" + response.toString());}System.out.println(System.currentTimeMillis() - time);}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/906276.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/906276.shtml
英文地址,請注明出處:http://en.pswp.cn/news/906276.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開源AI大模型等“神秘組合”,如何顛覆零售業數字化轉型?

基于開源AI大模型、AI智能名片與S2B2C商城小程序源碼的零售行業數字化轉型新路徑研究 摘要:在業界將企業數字化轉型劃分為管理數字化、工業數字化和營銷數字化三大部分的背景下,國內大型制造企業在ERP與工業4.0洗禮下正邁向智能型發展道路。而零售行業面…

uniapp+vite+cli模板引入tailwindcss

目前vitecli方式用的都是官方提供的模板,vite版本還是4.14版本,較舊,而tailwindcss已經有了4版本,實際發現引入最新版會報錯,因而繼續使用3.3.5版本 pnpm install tailwindcss3.3.5 uni-helper/vite-plugin-uni-tail…

Golang中的runtime.LockOSThread 和 runtime.UnlockOSThread

在runtime中有runtime.LockOSThread 和 runtime.UnlockOSThread 兩個函數,這兩個函數有什么作用呢?我們看一下標準庫中對它們的解釋。 runtime.LockOSThread // LockOSThread wires the calling goroutine to its current operating system thread. // T…

Ubuntu搭建NFS服務器的方法

0 工具 Ubuntu 18.041 Ubuntu搭建NFS服務器的方法 在Ubuntu下搭建NFS(網絡文件系統)服務器可以讓我們像訪問本地文件一樣訪問Ubuntu上的文件,例如可以把開發板的根文件系統放到NFS服務器目錄下方便調試。 1.1 安裝nfs-kernel-server&#…

HarmonyOS Next應用分層架構下組件封裝開發實踐

基于鴻蒙應用分層架構的ArkUI組件封裝實踐 在鴻蒙應用開發中,合理利用 ArkUI 組件進行封裝,可以實現代碼復用,提升開發效率。本文將結合鴻蒙應用分層架構的特點,詳細探討幾個典型的 ArkUI 組件封裝場景及其實現方案。 華為鴻蒙應…

JAVA請求vllm的api服務報錯Unsupported upgrade request、 Invalid HTTP request received.

環境: vllm 0.8.5 java 17 Qwen3-32B-FP8 問題描述: JAVA請求vllm的api服務報錯Unsupported upgrade request、 Invalid HTTP request received. WARNING: Unsupported upgrade request. INFO: - "POST /v1/chat/completions HTTP/1.1&…

舊 docker 版本通過 nvkind 搭建虛擬多節點 gpu 集群的坑

踩坑 參考nvkind教程安裝到Setup這一步,由于docker版本較舊,–cdi.enabled 和 config 參數執行不了 手動修改 /etc/docker/daemon.json 配置文件 "features": {"cdi": true}手動修改 /etc/nvidia-container-runtime/config.toml 配…

C++:與7無關的數

【描述】 一個正整數,如果它能被7整除,或者它的十進制表示法中某一位上的數字為7,則稱其為與7相關的數.現求所有小于等于n(n < 100)的與7無關的正整數的平方和. 【輸入】 輸入為一行,正整數n(n < 100) 【輸出】 輸出一行&#xff0c;包含一個整數&#xff0c;即小于等于n…

FPGA:Lattice的FPGA產品線以及器件選型建議

本文將詳細介紹Lattice Semiconductor的FPGA產品線&#xff0c;幫助你了解各系列的特點和適用場景&#xff0c;以便更好地進行選型。Lattice以低功耗、小尺寸和高性能為核心&#xff0c;產品覆蓋低中端市場&#xff0c;廣泛應用于通信、計算、工業、汽車、消費電子、嵌入式視覺…

汽車零部件沖壓車間MES一體機解決方案

在當前制造業升級的大背景下&#xff0c;提升生產效率、實現精細化管理已成為企業競爭力的關鍵。特別是在汽車零部件制造領域&#xff0c;沖壓車間作為生產流程中的重要一環&#xff0c;其生產數據的實時采集與分析對于確保產品質量、優化生產節拍、降低運營成本至關重要。今天…

32、跨平臺咒語—— React Native初探

一、時空晶體架構&#xff08;核心原理&#xff09; 1. 量子組件橋接協議 // 原生組件映射 <View> → iOS UIView / Android ViewGroup <Text> → UILabel / TextView 魔法特性&#xff1a; ? JavaScriptCore引擎&#xff1a;通過V8/Hermes引擎執行JS邏輯…

前端面試寶典---webpack面試題

webpack 的 tree shaking 的原理 Webpack 的 Tree Shaking 過程主要包含以下步驟&#xff1a; 模塊依賴分析&#xff1a;Webpack 首先構建一個完整的模塊依賴圖&#xff0c;確定每個模塊之間的依賴關系。導出值分析&#xff1a;通過分析模塊之間的 import 和 export&#xff…

VUE3_ref和useTemplateRef獲取組件實例,ref獲取dom對象

舊寫法 ref的字符串需要跟js中ref定義的變量名稱一樣 類型丟失&#xff0c;無法獲取到ref定義的title類型 <template><div><h1 ref"title">Hello Vue3.5</h1></div> </template><script setup>import { ref, onMounted } …

知識圖譜(KG)與大語言模型(LLM)

知識圖譜&#xff08;KG&#xff09;以其結構化的知識表示和推理能力&#xff0c;為大語言模型&#xff08;LLM&#xff09;的“幻覺”、知識更新滯后和可解釋性不足等問題提供了有力的解決方案。反過來&#xff0c;LLM的強大文本理解和生成能力也為KG的構建、補全、查詢和應用…

MySQL數據庫設計

1. 如何設計數據庫 設計數據庫步驟 2. E-R圖的使用 我們在日常設計的數據庫多為“一對多”和“多對一” 3. 設計數據庫三大范式? 第一范式&#xff08;1st NF&#xff09;&#xff1a;確保每列的原子性 第二范式&#xff08;2st NF&#xff09;&#xff1a;每個表只描述一件事…

C#中Action的用法

Action 是 C# 中委托的一種&#xff0c;用于封裝無返回值的方法。它引用的方法不能有返回值&#xff0c;但可以有零個或多個參數。相比delegate委托&#xff0c;Action 委托的優點是不必顯式定義封裝無參數過程的委托&#xff0c;使代碼更加簡潔和易讀。 1、delegate-委托 先…

計算機視覺與深度學習 | matlab實現EMD-CNN-LSTM時間序列預測(完整源碼、數據、公式)

EMD-CNN-LSTM 一、完整代碼實現二、核心公式說明1. **經驗模態分解(EMD)**2. **1D卷積運算**3. **LSTM門控機制**4. **損失函數**三、代碼結構解析四、關鍵參數說明五、性能優化建議六、典型輸出示例以下是用MATLAB實現EMD-CNN-LSTM時間序列預測的完整方案,包含數據生成、經…

mybatis-plus實操

如何生成完全看項目&#xff0c;有的人是用管理系統生成&#xff0c;還有其他人可能是.....。博主這里是用插件生成 我是插件的話&#xff0c;先在ide連接上數據源&#xff0c;然后對表右鍵&#xff0c;直接來到下面這個步驟&#xff0c; 第一次是新增6個文件&#xff0c;我們…

Mergekit——任務向量合并算法Ties解析

Mergekit——高頻合并算法 TIES解析 Ties背景Ties 核心思想具體流程總結 mergekit項目地址 Mergekit提供模型合并方法可以概況為三大類&#xff1a;基本線性加權、基于球面插值、基于任務向量&#xff0c;今天我們來刷下基于任務向量的ties合并方法&#xff0c;熟悉原理和代碼。…

YOLOv8 在單片機上部署的缺點和應對方案

YOLOv8 在單片機上部署的主要挑戰與缺陷 將 YOLOv8 部署到單片機上確實面臨諸多技術挑戰&#xff0c;主要源于單片機有限的計算資源與 YOLOv8 模型的高復雜度之間的矛盾。以下是具體的缺陷和限制&#xff1a; 1. 計算資源嚴重不足 算力限制&#xff1a;典型單片機&#xff0…