搭建基于飛槳的OCR工具庫,總模型僅8.6M的超輕量級中文OCR,單模型支持中英文數字組合識別、豎排文本識別、長文本識別的PaddleOCR

介紹

  • 基于飛槳的OCR工具庫,包含總模型僅8.6M的超輕量級中文OCR,單模型支持中英文數字組合識別、豎排文本識別、長文本識別。同時支持多種文本檢測、文本識別的訓練算法。

相關鏈接

  • PaddleOCR項目地址
  • 飛槳開源深度學習平臺
  • 效果展示頁面
  • 中文OCR在線體驗地址
  • 中文OCR模型快速使用

特性

  • 超輕量級中文OCR模型,總模型僅8.6M
    • 單模型支持中英文數字組合識別、豎排文本識別、長文本識別
    • 檢測模型DB(4.1M)+識別模型CRNN(4.5M)
  • 實用通用中文OCR模型
  • 多種預測推理部署方案,包括服務部署和端側部署
  • 多種文本檢測訓練算法,EAST、DB
  • 多種文本識別訓練算法,Rosetta、CRNN、STAR-Net、RARE
  • 可運行于Linux、Windows、MacOS等多種系統

算法介紹

文本檢測算法

  • EAST
  • DB

文本識別算法

  • CRNN
  • Rosetta
  • STAR-Net
  • RARE

文檔教程

快速安裝

? ?準備工作

  • 快速安裝? 提煉最核心的代碼,此處僅僅使用最簡單的CPU的方式進行安裝,使用GPU的方式遇到了一些問題,需要解決
  • 切換到工作目錄下面 cd /home/Projects? 只要是自己可以記住的文件夾就可以
  • 如果先前沒有安裝過docker的需要先安裝docker 不同系統的命令不一樣,此處以centos為例子,yum install docker
  • docker相關簡單命令 參考?我的博客?,需要執行?docker -v 驗證docker是否安裝成功,如果安裝成功,執行service docker start的命令,啟動docker,然后才可以執行下面的命令

(建議)準備docker環境

  • 第一次使用這個鏡像,會自動下載該鏡像,請耐心等待
  • 在CPU環境下使用docker,使用docker而不是nvidia-docker創建docker
sudo docker run --name ppocr -v $PWD:/paddle --network=host -it hub.baidubce.com/paddlepaddle/paddle:latest-gpu-cuda9.0-cudnn7-dev /bin/bash
  • 小提示
# ctrl+P+Q可退出docker,重新進入docker使用如下命令
sudo docker container exec -it ppocr /bin/bash
  • 然后就會進行鏡像的拉取操作,通過docker images檢查是否加載了下載的鏡像
docker images
  • 執行docker images后如果有下面的輸出,則證明拉取鏡像成功
  • hub.baidubce.com/paddlepaddle/paddle latest-gpu-cuda9.0-cudnn7-dev f56310dcc829

更改python3默認版本

  • docker中的python默認使用python3.5,PaddleOCR需要在Python3.7下執行(該版本下,對于第三方依賴庫的兼容性更好一些)。進入docker后,可以編輯/etc/profile文件,但是你會發現docker鏡像里面沒有vim等編輯工具
  • 先執行apt-get update命令,同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,這樣才能獲取到最新的軟件包,這個時候系統由先前的centos使用yum換成了apt-get內核
  • 等更新完畢以后再敲命令:apt-get install vim,安裝vim
  • 這次再編輯/etc/profile,在文件末尾添加
alias python3=python3.7
alias pip3=pip3.7
  • 保存之后,使用source /etc/profile命令使設置的默認Python生效

安裝PaddlePaddle Fluid v1.7

  • 更新pip,使用命令pip3 install --upgrade pip
  • 如果您的機器是CPU,請運行以下命令安裝
python3 -m pip install paddlepaddle==1.7.2 -i https://pypi.tuna.tsinghua.edu.cn/simple

克隆PaddleOCR repo代碼

git clone https://github.com/PaddlePaddle/PaddleOCR

安裝第三方庫

cd PaddleOCR
pip3 install -r requirments.txt

中文OCR模型快速使用

?inference模型下載

  • 參考文檔

  • ?模板樣例
mkdir inference && cd inference
# 下載檢測模型并解壓
wget {url/of/detection/inference_model} && tar xf {name/of/detection/inference_model/package}
# 下載識別模型并解壓
wget {url/of/recognition/inference_model} && tar xf {name/of/recognition/inference_model/package}
cd ..
  • 以超輕量級模型為例
mkdir inference && cd inference
# 下載超輕量級中文OCR模型的檢測模型并解壓
wget https://paddleocr.bj.bcebos.com/ch_models/ch_det_mv3_db_infer.tar && tar xf ch_det_mv3_db_infer.tar
# 下載超輕量級中文OCR模型的識別模型并解壓
wget https://paddleocr.bj.bcebos.com/ch_models/ch_rec_mv3_crnn_infer.tar && tar xf ch_rec_mv3_crnn_infer.tar
cd ..
  • 解壓完畢后應有如下文件結構:

驗證結果

  • 需要在home/PaddleOCR文件夾下面執行這些命令

單張圖片

  • 以下代碼實現了文本檢測、識別串聯推理,在執行預測時,需要通過參數image_dir指定單張圖像或者圖像集合的路徑、參數det_model_dir指定檢測inference模型的路徑和參數rec_model_dir指定識別inference模型的路徑。可視化識別結果默認保存到 ./inference_results 文件夾里面
# 預測image_dir指定的單張圖像
python3 tools/infer/predict_system.py --image_dir="./doc/imgs/11.jpg" --det_model_dir="./inference/ch_det_mv3_db/"  --rec_model_dir="./inference/ch_rec_mv3_crnn/"# 預測image_dir指定的圖像集合
python3 tools/infer/predict_system.py --image_dir="./doc/imgs/" --det_model_dir="./inference/ch_det_mv3_db/"  --rec_model_dir="./inference/ch_rec_mv3_crnn/"# 如果想使用CPU進行預測,需設置use_gpu參數為False
python3 tools/infer/predict_system.py --image_dir="./doc/imgs/11.jpg" --det_model_dir="./inference/ch_det_mv3_db/"  --rec_model_dir="./inference/ch_rec_mv3_crnn/" --use_gpu=False
  • 更為詳細的內容請參見官網

Q&A

  • 參考網址
  • 關于推理速度
    圖片中的文字較多時,預測時間會增加,可以使用--rec_batch_num設置更小預測batch num,默認值為30,可以改為10或其他數值。
  • 超輕量模型和通用OCR模型的區別
    目前PaddleOCR開源了2個中文模型,分別是8.6M超輕量中文模型和通用中文OCR模型。兩者對比信息如下:

    • 相同點:兩者使用相同的算法訓練數據
    • 不同點:不同之處在于骨干網絡通道參數,超輕量模型使用MobileNetV3作為骨干網絡,通用模型使用Resnet50_vd作為檢測模型backbone,Resnet34_vd作為識別模型backbone,具體參數差異可對比兩種模型訓練的配置文件.

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

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

相關文章

macos 10.15 django2.2+apache2.4+ladon+wsgi寫webseverice接口

他的文檔不夠完善,使用起來可能有坑,因為不知道如何將ladondjangoapache綁定在一起使用,所以放棄了。 提醒:最好用個虛擬環境,防止庫沖突我使用的是anaconda 安裝apache macos本身自帶apache,其他平臺百度…

使用軟鏈接的方式遷移Docker

確認Docker安裝的位置 使用命令sudo docker info | grep "Docker Root Dir" 查看Docker的安裝位置如果是默認安裝的方式 ,一般會安裝在/var/lib/docker 路徑下面 前置工作 下文以 /store/software/docker 這個路徑作為要遷移的新 Docker 安裝(存儲)目錄…

Qt tableWidget導入\導出Excel表格 自用

首先在.pro文件中添加以下代碼:QTaxcontainer 代碼是轉載的,找不到源博客鏈接 void excel_01::on_pushButton_clicked() {//導出ui->progressBar->setValue(0); //設置進度條的值為0QString fileName QFileDialog::getSaveFileName(this,tr(&q…

基于HubServing的PaddleOCR部署

前提要求 服務器的部署需要鑒于先前安裝配置的docker環境,因此相關步驟查看我之前的博客 參考鏈接 服務部署 先前介紹 參考鏈接 官方推薦本博客采用基于HubServing的部署,這種方式已經集成到PaddleOCR里面,在先前的docker鏡像里面就可以…

我的職業生涯規劃學習日記(軟件工程)整理時間線

學習路線 語言只是工具不過學c一直都做不出來東西是為什么呢,下圖要第六部才做項目 概述 大一上學期:C,C,數據結構,cstl源碼,python爬蟲進入物聯網實驗室python方向,進入算法協會運維部學習算…

PaddleOCR和ChineseOCR的對比

PaddleOCR和ChineseOCR的對比 ChineseOCRPaddleOCR 對比 識別時間 chineseOCR識別的速度相對于PaddleOCR較慢,單純使用CPU對于單張圖片的識別時間可以達到20秒,如果使用GPU識別的時間一般控制在5秒以內(圖片包含的文字比較少的情形&#x…

C++內存管理(1)

根據侯捷老師的視頻:https://www.bilibili.com/video/BV1Kb411B7N8 這篇文章歸納內存管理的面試題和一些知識點梳理 正在更新中 首先為什么想要內存管理 不知道有沒有人好奇delete[]或者delete的時候為什么系統會自動這個變量 占了多少字節。 答案是因為cookies&a…

web3@0.20.1 在依據abi創建智能合約的時候報錯 TypeError: web3.eth.contract is not a function

前面的代碼不變 var web3 new Web3(new Web3.providers.HttpProvider("Http://localhost:8545")); var abi JSON.parse([{"constant":true,"inputs":[{"name":"candidate","type":"bytes32"}],"…

Linux學習筆記(一)------實操排雷

參考兄弟連b站網課 1.1如果沒有ifconfig 使用sudo apt install net-tools 下載;(ifconfig已經被淘汰所以需要另外下載) 1.2如果網卡是ens33; (1). vi /etc/sysconfig/network-scripts/ifcfg-ens33 將里面的…

Dapp簡單的投票小例子

準備工作 相關命令 mkdir simple_voting_dapp //創建文件夾cd simple_voting_dapp //進入文件夾npm init //初始化npm包管理文件,輸入ls 可以看到創建的package.json文件npm intsall web30.20.1 //安裝web3npm install solc0.4.25 //安裝solcnpm install -g ga…

使用mocha進行測試 區塊鏈

mocha安裝 npm install mocha --save-dev mocha簡介 mocha是一個JavaScript的單元測試的框架,既可以運行在瀏覽器環境中,也可以運行在node.js環境中,只需要編寫測試用例,mocha就會將測試自動的運行,并且給出測試的結…

Linux學習筆記(六)

參考書籍:linux就該這么學 6.存儲結構與磁盤劃分 6.1 文件系統與數據資料 6.2 掛載硬件設備 6.2.1 mount 命令用于掛載文件系統 6.2.2 umount 命令用于撤銷已經掛載的設備文件 6.3 添加硬盤 6.3.1 fdisk 命令用于管理磁盤分區 6.3.2 用于查看文件數據占用量的 du 命…

實現Linux系統外部和容器內部的文件傳輸

主機和容器之間進行文件傳輸,需要使用容器的ID即可 獲取方法如下 輸入指令 docker ps -a只需要CONTAINER ID傳輸命令 docker cp 本地文件路徑 容器ID:容器的路徑將文件從容器拷貝到本地的原理是一致的,只需要將對應路徑的位置進行更換即可

Linux學習筆記(五)

參考書籍:linux就該這么學 5 用戶身份與文件權限 5.1 用戶身份與能力 強烈推薦大家在學習時使用 root 管理員權限!因為在 Linux 的學習過程中如果使用普通用戶身份進行操作,則在配置服務之后出現錯誤時很難判斷是系統自身的問題還是因為權限不…

清除Docker的占用空間問題

使用命令查看磁盤的空間 docker system df ,類似于Linux的df命令,用于查看Docker使用的磁盤空間Docker鏡像占據了4.789GBDocker容器占據了348BDocker數據卷占據了0B 執行刪除命令 docker system prune命令可以用于清理磁盤,刪除關閉的容器、…

集訓01-03 (c++實現)

#include<bits/stdc.h>與using namespace std;在第一第二行加上就行&#xff0c;無需了解 cin cout endl為c的輸入&#xff0c;輸出與換行符 Istringsteam 是string流,用來string轉換為int 五個函數&#xff08;需要稍微了解c迭代器&#xff0c;lambda(類似函數)&#xf…

區塊鏈的完整流程 自動化執行代碼

通過npm script機制&#xff0c; 在package.json文件中&#xff0c;輸入對應的代碼&#xff0c;就可以自動化執行相關的函數使用npm run test執行package.json中的內容&#xff0c;因為package.json包含test&#xff0c;所以可行&#xff0c;但是使用npm run compile會報錯

集訓04-06 (c++實現)

極力推薦《算法筆記》這本書&#xff01;&#xff01;&#xff01; 極力推薦《算法筆記》這本書&#xff01;&#xff01;&#xff01; 極力推薦《算法筆記》這本書&#xff01;&#xff01;&#xff01; &#xff08;重要的事情說三遍&#xff09; 數據結構和算法講的很好&…

數字簽名和數字信封之間的介紹

介紹 公鑰密碼體制在實際應用中包含數字簽名和數字信封兩種方式 數字簽名 指用戶用自己的【私鑰】對原始數據的哈希摘要進行加密所得的數據。數字簽名定義兩種互補的運算&#xff1a;一個用于簽名&#xff0c;另一個用于驗證。"私鑰簽名,公鑰驗證"簽名&#xff1a;…

Linux學習筆記(三)

參考書籍&#xff1a;Linux就該怎么學 3 管道符、重定向與環境變量 3.1.1 輸入輸出重定向 ? 標準輸入重定向&#xff08;STDIN&#xff0c;文件描述符為 0&#xff09;&#xff1a;默認從鍵盤輸入&#xff0c;也可從其他文件或命令中輸入。 ? 標準輸出重定向&#xff08;STDO…