<dl id="llxdb"></dl>
<video id="llxdb"><output id="llxdb"></output></video><dl id="llxdb"><output id="llxdb"></output></dl>
<output id="llxdb"></output>
<noframes id="llxdb"><dl id="llxdb"></dl>
<video id="llxdb"></video>
<output id="llxdb"><delect id="llxdb"><font id="llxdb"></font></delect></output>
<video id="llxdb"></video><dl id="llxdb"><output id="llxdb"></output></dl>
<dl id="llxdb"><delect id="llxdb"><font id="llxdb"></font></delect></dl><video id="llxdb"></video><dl id="llxdb"></dl><dl id="llxdb"><output id="llxdb"><font id="llxdb"></font></output></dl>
                          您的位置:首頁 >聚焦 >

                          【新視野】【關于 OCR 光學字符識別】 那些你不知道的事

                          2022-10-24 17:09:06    來源:程序員客棧

                          作者簡介

                          作者:楊夕

                          推薦系統 百面百搭地址:


                          (相關資料圖)

                          https://github.com/km1994/RES-Interview-Notes

                          NLP 百面百搭地址:

                          https://github.com/km1994/NLP-Interview-Notes

                          個人筆記:

                          https://github.com/km1994/nlp_paper_study

                          關注公眾號 【關于NLP那些你不知道的事】 加入 【NLP && 推薦學習群】一起學習?。?!

                          NLP && 推薦學習群【人數滿了,加微信 blqkm601】

                          一、什么是 OCR?

                          光學字符識別(Optical Character Recognition, OCR)是指對文本資料的圖像文件進行分析識別處理,獲取文字及版面信息的過程。亦即將圖像中的文字進行識別,并以文本的形式返回。

                          OCR的分類:

                          印刷體識別

                          介紹:印刷體大多都是規則的字體,這些字體都是計算機生成再通過打印技術印刷到紙上;

                          存在問題:在印刷過程中字體很有可能變得斷裂或者墨水粘連,使得OCR識別異常困難

                          手寫體識別

                          介紹:人手寫文字;

                          存在問題:因為人類手寫的字往往帶有個人特色,每個人寫字的風格基本不一樣,雖然人類可以讀懂你寫的文字,但是機器缺很難

                          二、OCR 應用場景?

                          OCR的應用場景 可以分為兩種:

                          識別特定場景的專用OCR

                          應用:證件識別、車牌識別

                          車輛識別代碼

                          機票識別

                          識別多種場景的通用OCR

                          應用:場景不固定;

                          難度:由于通用圖片的場景不固定,文字布局多樣,因此難度更高;

                          三、OCR 技術路線是怎么樣?

                          OCR 技術路線 可以 分為以下 技術路線:

                          3.1 圖像預處理

                          動機:常見圖片存在 文字布局多樣,扭曲,模糊,光線不均和等問題,如果不做處理,直接使用,容易丟失大量有效信息,從而導致 識別效果低下;

                          常用的圖像預處理:幾何變換(透視、扭曲、旋轉等)、畸變校正、去除模糊、圖像增強和光線校正等;

                          采用的 圖像預處理方法:

                          傳統 OCR 圖像預處理方法:

                          介紹:基于數字圖像處理和傳統機器學習等方法對圖像進行處理和特征提??;

                          常用方法:HoG

                          優點:有利于增強簡單場景的文本信息;

                          缺點:對于圖像模糊、扭曲等問題魯棒性很差,對于復雜場景泛化能力不佳;

                          基于 深度學習 OCR 圖像預處理方法:

                          介紹:使用基于深度學習的神經網絡作為特征提取手段;

                          常用方法:基于CNN的神經網絡

                          優點:CNN強大的學習能力,配合大量的數據可以增強特征提取的魯棒性,面臨模糊、扭曲、畸變、復雜背景和光線不清等圖像問題均可以表現良好的魯棒性;

                          缺點:需要大量標注數據;

                          3.2 文字檢測

                          動機:常見的圖片 不僅 包含 有用的文字,還存在 大量的背景信息,這些背景信息 對于 模型容易存在誤導作用;

                          介紹:文字檢測即檢測文本的所在位置和范圍及其布局,即 識別哪里有文字,文字的范圍有多大 等問題;

                          采用的 圖像預處理方法:Faster R-CNN、FCN、RRPN、TextBoxes、DMPNet、CTPN、SegLink 等;

                          3.3 文本識別

                          動機:雖然 知道 圖片中文字的具體位置,但是 如何知道這些文字是什么呢?

                          介紹:在文本檢測的基礎上,對文本內容進行識別,將圖像中的文本信息轉化為文本信息;

                          采用的 圖像預處理方法:CNN+Softmax、CNN+RNN+CTC、CNN+RNN+Attention 等;

                          四、OCR 識別庫 有哪些?4.1 pytesseract

                          介紹:pytesseract是基于Python的OCR工具, 底層使用的是Google的Tesseract-OCR 引擎,支持識別圖片中的文字,支持jpeg, png, gif, bmp, tiff等圖片格式。本文介紹如何使用pytesseract 實現圖片文字識別。

                          環境配置

                          Python 3.6+

                          PIL庫

                          安裝Google Tesseract OCR

                          系統:windows/mac/linux,我的系統是Windows10

                          安裝

                          安裝Google Tesseract

                          Tesseract 下載地址

                          Tesseract OCR github地址:https://github.com/tesseract-ocr/tesseract    Windows Tesseract下載地址:https://digi.bib.uni-mannheim.de/tesseract/    Mac和Linux安裝方法參考:https://tesseract-ocr.github.io/tessdoc/Installation.html

                          Tesseract 安裝(記得下載 中文語言包)

                          Tesseract 配置

                          安裝完成后,添加到環境變量PATH中

                          測試 是否安裝成功

                          $ tesseractUsage:  tesseract --help | --help-extra | --version  tesseract --list-langs  tesseract imagename outputbase [options...] [configfile...]OCR options:  -l LANG[+LANG]        Specify language(s) used for OCR.NOTE: These options must occur before any configfile.Single options:  --help                Show this help message.  --help-extra          Show extra help for advanced users.  --version             Show version information.  --list-langs          List available languages for tesseract engine.

                          安裝 pytesseract

                          Tesseract 下載地址

                          Python tesseract:https://github.com/madmaze/pytesseract

                          pip安裝pytesseract

                          $pip install Pillow    $pip install pytesseract

                          pytesseract 使用

                          先準備一張包含英文字符的圖片,下面的代碼實現提取圖片中的中文和英文字符,并識別為字符串:

                          import pytesseracttry:    from PIL import Imageexcept ImportError:    import Image# 列出支持的語言print(pytesseract.get_languages(config=""))print(pytesseract.image_to_string(Image.open("test.png"), lang="chi_sim+eng"))>>>生 63 211 80 227 0存 81 209 118 227 0是 122 211 139 226 0文 126 200 154 231 0明 142 210 157 226 0的 162 209 197 227 0第 200 217 218 219 0一 221 209 236 226 0需 217 200 253 231 0要 239 209 259 226 0。 260 211 266 216 0猜 325 64 364 82 0疑 364 64 481 82 0鏈 373 54 393 86 0和 383 54 403 86 0技 403 54 435 86 0術 419 54 451 86 0爆 441 54 477 86 0炸 469 54 485 86 0##############################levelpage_numblock_numpar_numline_numword_numlefttopwidthheightconftext11000000566279-1211000635220318-1311100635220318-1411110635220318-15111116352551896生存51111212253171596是51111312648313196文明51111416252351896的5111152006018291第51111622153151793一51111721748423193需要511118260636591。21200032519715618-131210032519715618-141211032519715618-15121113251971561894猜疑512112373193203277鏈512113383193203292和512114403193483296技術512115441193443294爆炸

                          4.2 PaddleOCR4.2.1 PaddleOCR 介紹

                          PaddleOCR是百度開源的一款基于深度學習的ocr識別庫,對中文的識別精度相當不錯,可以應付絕大多數的文字提取需求。

                          4.2.2 PaddleOCR 預訓練權重 介紹

                          關于預訓練權重,PaddleOCR 官網根據提供權重文件大小分為兩類:

                          一類為輕量級,(檢測+分類+識別)三類權重加起來大小一共才 9.4 M,適用于手機端和服務器部署;

                          另一類(檢測+分類+識別)三類權重內存加起來一共 143.4 MB ,適用于服務器部署;無論模型是否輕量級,識別效果都能與商業效果相比,在本期教程中將選用輕量級權重用于測試;

                          4.2.3 PaddleOCR 環境介紹

                          PaddlePaddle 2.0.0    Python 3.7    glibc 2.23    cuDNN 7.6+(GPU)

                          4.2.4 PaddleOCR 使用

                          新建環境

                          $ conda create -n paddle38 python=3.8

                          安裝paddlepaddle-gpu

                          $ pip install paddlepaddle-gpu

                          PaddleOCR 使用

                          import osimport csvimport timefrom paddleocr import PaddleOCR, draw_ocr # Paddleocr目前支持中英文、英文、法語、德語、韓語、日語,可以通過修改lang參數進行切換# 參數依次為`ch`, `en`, `french`, `german`, `korean`, `japan`。ocr = PaddleOCR(use_angle_cls=True, use_gpu=True, lang="ch")  # need to run only once to download and load model into memory# 選擇你要識別的圖片路徑def test_ocr(img_path):    result = ocr.ocr(img_path, cls=True)    OCR_result = []    for line in result:        OCR_result.append(line[1][0])    res = " ".join(OCR_result)    print(res)    return res if __name__ == "__main__":    """    讀取filepath下的所有jpg文件,圖片識別之后存入save_file中,加上識別每張圖片的時間    """    save_file = "result_1223.csv"    filePath = "pics/"    paths = os.listdir(filePath)    with open(save_file, "w", encoding="utf-8",newline="") as save_f:        writer = csv.writer(save_f)        # 先寫入columns_name        writer.writerow(["url", "paddle_ocr", "ocr_time"])        for i in paths:            a = time.time()            img_path = f"{filePath}{i}"            baidu_res = test_ocr(img_path)            b1 = time.time() - a            line = [i, baidu_res, b1]            # 寫入多行用writerows            writer.writerow(line)

                          PaddleOCR 識別結果

                          4.2.5 PaddleOCR 安裝過程中問題列表

                          問題一:Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools":http://landinghub.visualstudio.com/visual-cpp-build-tools

                          問題介紹

                          error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools

                          【解決】:python_Levenshtein?0.12.0?cp36?cp36m?win_amd64.whl

                          下載地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/

                          pip install C:\Users\IMMOTOR\Desktop\python_Levenshtein-0.12.0-cp36-cp36m-win_amd64.whl

                          問題二:Could not find a version that satisfies the requirement fasttext

                          0.9.1 (from paddleocr) (from versions: )No matching distribution found for fasttext

                          0.9.1 (from paddleocr)

                          Could not find a version that satisfies the requirement fasttext==0.9.1 (from paddleocr) (from versions: )No matching distribution found for fasttext==0.9.1 (from paddleocr)

                          【解決】:安裝之,pip install fasttext==0.9.1

                          問題三:升級jinja2:

                          pip install Jinja2 --upgrade

                          問題四:No module named "paddle"

                          ModuleNotFoundError: No module named "paddle"

                          【解決】:python -m pip install paddlepaddle -ihttps://mirror.baidu.com/pypi/simple

                          問題五:xlrd.biffh.XLRDError: Excel xlsx file

                          pip uninstall xlrd    pip install xlrd==1.2.0

                          問題五:paddleOCR識別速度過慢

                          python paddleocr 增加識別速度的方法

                          切記長度不要超過960px

                          【解決】:

                          模型壓縮 enable_mkldnn=True,use_tensorrt=True,use_angle_cls=False

                          ocr = PaddleOCR(enable_mkldnn=True,use_tensorrt=True,use_angle_cls=False,use_gpu= False)    text=ocr.ocr(img_name) #打開圖片文件

                          參考

                          OCR技術簡介

                          【OCR技術系列一】光學字符識別技術介紹

                          適合小白的幾個入門級Python ocr識別庫

                          Python OCR工具pytesseract詳解

                          PaddleOCR

                          PaddleOCR詳解

                          十分鐘掌握PaddleOCR使用

                          所有文章

                          五谷雜糧

                          超1900星標!自然語言處理論文學習筆記

                          超500星標!自然語言處理 面經

                          超500星標!推薦系統 面經

                          推廣搜 軍火庫【持續更新】

                          NLP百面百搭

                          【算法基礎篇】

                          【關于 過擬合和欠擬合】那些你不知道的事

                          【關于 BatchNorm vs LayerNorm】那些你不知道的事

                          【關于 激活函數】那些你不知道的事

                          【關于 正則化】那些你不知道的事

                          【關于 優化算法】那些你不知道的事

                          【關于 歸一化】那些你不知道的事

                          【關于 判別式(discriminative)模型 vs. 生成式(generative)模型】 那些你不知道的事

                          【機器學習篇】

                          【關于 邏輯回歸】那些你不知道的事

                          【關于 支持向量機】 那些你不知道的事

                          【關于 集成學習】那些你不知道的事

                          【深度學習篇】

                          【關于 CNN】那些你不知道的事(上)

                          【關于 CNN】那些你不知道的事(下)

                          【關于 Attention 】那些你不知道的事

                          【關于Transformer】 那些的你不知道的事(上)

                          【關于Transformer】 那些的你不知道的事(中)

                          【關于Transformer】 那些的你不知道的事 (下)

                          【預訓練模型篇】

                          【關于 TF-idf】 那些你不知道的事

                          【關于 Word2vec】 那些你不知道的事

                          【關于 fastText】 那些你不知道的事

                          【關于Bert】 那些的你不知道的事(上)

                          【關于Bert】 那些的你不知道的事(下)

                          【關于 Bert 源碼解析I 之 主體篇 】 那些的你不知道的事

                          【關于 Bert 源碼解析II 之 預訓練篇 】 那些的你不知道的事

                          【關于 Bert 源碼解析III 之 微調 篇 】 那些的你不知道的事

                          【關于 Bert 源碼解析IV 之 句向量生成篇 】 那些的你不知道的事

                          【Bert 越大越精篇】

                          XLNet->RoBERTa->ELECTRA->ERNIE 1.0->... 】那些的你不知道的事(一)" linktype="text" imgurl="" imgdata="null" data-itemshowtype="0" tab="innerlink" data-linktype="2" wah-hotarea="click" hasload="1">【關于 Bert 越大越精序列】那些的你不知道的事(一)

                          【關于 Bert 越大越精序列】那些的你不知道的事(二)

                          【關于 Bert 越大越精序列】那些的你不知道的事(三)

                          【Bert 短小精悍篇】

                          【關于 Bert 壓縮】 那些你不知道的事

                          【關于 BERT to TextCNN】那些你不知道的事

                          【關于 FastBERT 實現】那些你不知道的事

                          【關于自訓練 + 預訓練 = 更好的自然語言理解模型 】 那些的你不知道的事

                          【文本分類篇】

                          【關于 文本分類】那些你不知道的事

                          【關于 文本分類 trick】那些你不知道的事

                          【關鍵詞提取】

                          【關于 關鍵詞提取】 那些你不知道的事

                          【關于 KeyBERT 】 那些你不知道的事

                          【命名實體識別】

                          【關于 HMM】 那些你不知道的事

                          【關于 MEMM】 那些你不知道的事

                          【關于 CRF】 那些你不知道的事

                          【關于 DNN-CRF】 那些你不知道的事

                          【關于 中文領域 NER】 那些你不知道的事

                          【關于 NER trick】 那些你不知道的事

                          【問答系統】

                          【關于 FAQ 檢索式問答系統】 那些你不知道的事

                          【關于 KBQA】 那些你不知道的事

                          【關于 對話系統】那些你不知道的事

                          【多標簽文本分類篇】

                          Multi-Class is Multi-Label ???

                          【trick 篇】

                          NLP常見trick匯總及代碼實現

                          【關于BERT如何處理篇章級長文本】那些你不知道的事

                          當Bert遇到未登錄詞?也許你應該這樣做!

                          【其他】

                          NLP論文學習篇【文本摘要】自然語言處理任務系列——文本摘要【指代消歧】自然語言處理任務系列——指代消解(共指消解【文本糾錯】自然語言處理任務系列——文本糾錯【其他】

                          推薦系統 百面百搭

                          【關于 推薦系統 導論篇】 那些你不知道的事

                          【關于 推薦系統百面百搭 導論篇】 那些你不知道的事

                          推薦系統機器學習篇

                          【關于 協同過濾篇】 那些你不知道的事

                          【關于 矩陣分解篇】 那些你不知道的事

                          torch 學習篇

                          Bert4torch 快速入門實戰

                          Rasa 對話系統

                          《【社區說】一起來聊聊 Rasa 3.0》 不完全筆記

                          (一)對話機器人概述

                          (二)RASA開源引擎介紹

                          (三)RASA NLU語言模型

                          (四)RASA NLU分詞器

                          (五)RASA NLU特征生成器

                          (六)RASA NLU意圖分類器

                          (七)RASA NLU實體提取器

                          (九)RASA自定義pipeline組件

                          (十)RASA CORE Policy

                          (十一)RASA CORE Action

                          (十二)RASA Domain

                          (十三)RASA 訓練數據

                          (十四)RASA story

                          (十五)Rasa Rules

                          (十六)RASA最佳實踐

                          (十七)基于RASA開始中文機器人

                          (十八)基于RASA開始中文機器人實現機制

                          (十九)基于知識圖譜的問答系統(KBQA)

                          (二十)基于閱讀理解的問答系統

                          (二十一)RASA應用常見問題

                          (二十二)RASA的超參數優化

                          (二十三)機器人測試與評估

                          (二十四)利用Rasa Forms創建上下文對話助手

                          DIET:Dual Intent and Entity Transformer——RASA論文翻譯

                          知識圖譜入門

                          浙大圖譜講義 | 第一講-知識圖譜概論 — 第1節-語言與知識

                          浙大圖譜講義 | 第一講-知識圖譜概論 — 第2節-知識圖譜的起源

                          圖譜講義 | 第一講-第3節-知識圖譜的價值

                          圖譜講義 | 第一講-第4節-知識圖譜的技術內涵

                          圖譜講義 | 第二講-第1節-什么是知識表示

                          轉載記錄

                          Bert與TensorRT部署手冊,享受絲滑的順暢

                          句向量新方案CoSENT實踐記錄

                          CHIP2021|臨床術語標準化第三名方案開源

                          CHIP2021 | 醫學對話臨床發現陰陽性判別任務第一名方案開源

                          破解transformer八股,快問快答

                          BERT可視化工具bertviz體驗

                          PRGC:一種新的聯合關系抽取模型

                          給神經網絡加入先驗知識!

                          CBLUE中文醫學語言理解測評Baseline

                          關鍵詞: 你不知道的事 推薦系統 自然語言處理

                          相關閱讀

                          Av久草
                          <dl id="llxdb"></dl>
                          <video id="llxdb"><output id="llxdb"></output></video><dl id="llxdb"><output id="llxdb"></output></dl>
                          <output id="llxdb"></output>
                          <noframes id="llxdb"><dl id="llxdb"></dl>
                          <video id="llxdb"></video>
                          <output id="llxdb"><delect id="llxdb"><font id="llxdb"></font></delect></output>
                          <video id="llxdb"></video><dl id="llxdb"><output id="llxdb"></output></dl>
                          <dl id="llxdb"><delect id="llxdb"><font id="llxdb"></font></delect></dl><video id="llxdb"></video><dl id="llxdb"></dl><dl id="llxdb"><output id="llxdb"><font id="llxdb"></font></output></dl>