日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python,OpenCV中的光学字符识别(OCR Optical Character Recognition)

發(fā)布時間:2023/12/29 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python,OpenCV中的光学字符识别(OCR Optical Character Recognition) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Python,OpenCV中的光學字符識別(OCR Optical Character Recognition

  • 1. 什么是OCR?
  • 2. 光學字符識別簡史
  • 3. 光學字符識別的應用
  • 4. OSD 方向和腳本檢測
  • 5. 前處理和后處理的重要性
  • 6. OCR工具和API
  • 參考

這篇博客將介紹什么是光學字符識別OCR,介紹OCR發(fā)展的簡短歷史,了解OCR真實的應用場景,了解OCR與方向和腳本檢測(OSD)之間的區(qū)別。并了解圖像預處理和后處理對于提高OCR結果的重要性。

  • OSD是任何OCR系統(tǒng)的基本組件。
  • 圖像預處理和OCR結果后處理步驟,通常用于提高OCR精度。

1. 什么是OCR?

光學字符識別(Optical Character Recognition)簡稱OCR,是用于描述將文本圖像轉(zhuǎn)換為機器編碼文本的算法和技術。主要包括以下3步:

  • 接受輸入圖像(掃描、拍照或計算機生成);
  • 就像人類“閱讀”一樣自動檢測文本;
  • 將文本轉(zhuǎn)換為機器可讀格式,以便在更大的計算機視覺系統(tǒng)范圍內(nèi)對其進行搜索、索引和處理;
  • OCR表面上看起來很簡單,盡管計算機視覺領域已經(jīng)存在了50多年,但研究人員尚未創(chuàng)建高度準確的通用OCR系統(tǒng),依然道阻且長。

    另外鑒于人類通過書寫進行交流的方式有很多細微差別——有自然語言處理(NLP Natural Language Processing)的所有問題,并且計算機視覺系統(tǒng)在從圖像讀取文本時永遠無法獲得100%的準確度。噪聲、書寫風格、圖像質(zhì)量等方面的變量太多。OCR實現(xiàn)并不容易。

    2. 光學字符識別簡史

    • 1914年,早期的OCR技術完全是機械式的,伊曼紐爾·戈德伯格開發(fā)了可以讀取字符并將其轉(zhuǎn)換為標準電報代碼的機器;

    • 1920~1930年,伊曼紐爾·戈德伯格開發(fā)了搜索縮微膠片(縮小的文檔,通常是電影、報紙、期刊等)中的字符OCR。

    • 1974年,OCR主要致力于創(chuàng)建“盲人閱讀機器”。

    • 1980年,惠普(HP)實驗室開始研究Tesseract,2005年開源后很快成為世界上最流行的OCR引擎。

    • 2010年,Tesseart繼續(xù)發(fā)展,稱為長短時記憶(LSTM long short-term memory)網(wǎng)絡的專門體系結構極大地提高了OCR的準確性。

      LSTM引擎提供了顯著的精度增益,使得即使在較差的非最佳條件下也能準確地識別OCR文本。
      LSTM引擎接受了超過123種語言的培訓,使得除英語以外的語言(包括基于腳本的語言,如漢語、阿拉伯語等)進行OCR文本更加容易。

    • 2020年,OCR被谷歌、微軟和亞馬遜等科技巨頭日益商業(yè)化。

    3. 光學字符識別的應用

    OCR有許多應用,最初的應用是為盲人創(chuàng)建閱讀機器。自那時以來,OCR應用有了顯著的發(fā)展,包括但不限于:

    • 自動車牌識別(ALPR/ANPR Automatic license/number plate recognition)
    • 交通標志識別(Traffic sign recognition)
    • 分析并擊敗網(wǎng)站上的CAPTCHA(區(qū)分計算機和人類的完全自動化公共圖靈測試Analyzing and defeating CAPTCHAs (Completely Automated Public Turing tests to tell Computers and Humans Apart) on websites)
    • 從名片中提取信息(Extracting information from business cards)
    • 自動讀取護照的機器可讀區(qū)(MRZ machine-readable zone)和其他相關部分(Automatically reading the machine-readable zone and other relevant parts of a passport)
    • 解析銀行支票中的路由號碼、帳號和貨幣金額(Parsing the routing number, account number, and currency amount from a bank check)
    • 理解自然場景中的文本,如從智能手機拍攝的照片(Understanding text in natural scenes such as the photos captured from smartphone )

    4. OSD 方向和腳本檢測

    OSD:Orientation and Script Detection方向和腳本檢測

    • OCR是獲取輸入圖像并以人類可讀和機器可讀格式返回文本的過程;
    • OSD是分析圖像中文本元數(shù)據(jù),特別是方向和腳本/書寫風格的過程。
      可以說OSD信息是提高OCR準確性的前置步驟。

    文本的方向是輸入圖像中文本的角度(以度為單位)。為了獲得更高的OCR精度,需要應用OSD來確定文本方向,糾正它然后應用OCR。

    腳本和書寫風格是指用于書面和打字交流的一組字符和符號。OCR系統(tǒng)對特定腳本或書寫系統(tǒng)所能做出的任何規(guī)則、啟發(fā)或假設都將使OCR引擎在應用于給定腳本時更加準確。

    5. 前處理和后處理的重要性

    創(chuàng)建一個成功的OCR應用程序部分是科學,部分是藝術。

    盡管 Tesseract OCR引擎的進步,OCR系統(tǒng)可以進行自動分割和頁面分析。然而這些系統(tǒng)還是遠不如人類智能,人類幾乎可以即時解析復雜背景中的文本。

    • 如果在OCR前應用一些基本的圖像處理操作,如閾值、距離變換和形態(tài)學操作,最終將得到清晰的圖像。OCR將獲得更好的效果;

    • 如果先對文本進行適當?shù)那謇砗头指?#xff0c;OCR系統(tǒng)將更容易識別文本。

    • 后處理OCR文本。OCR系統(tǒng)永遠不會100%準確,所以應該假設會有一些錯誤。為了幫助解決這個問題,可以應用一些規(guī)則和啟發(fā)法。

    6. OCR工具和API

    接下來將介紹4部分內(nèi)容:

  • 探索世界上最流行的OCR軟件包——Tesseract OCR引擎;
  • Tesseract OCR引擎是一個OCR軟件包,最初開發(fā)于20世紀80年代,經(jīng)歷了多次修訂和更新,現(xiàn)在是世界上最流行的OCR系統(tǒng)。
    幾乎每種流行編程語言(Java、C/C++、PHP等)都有Tesseract綁定。

  • 了解Python和 PyTesseract 模塊如何使用Tesseract進行推理
  • PyTesseract庫是一個Python包,它是與tesseract命令行進行交互的二進制文件。只需使用一個或兩個函數(shù)調(diào)用,就可以輕松地將Tesseract OCR應用于OCR項目。

  • 了解計算機視覺和圖像處理算法對OCR準確性的影響
  • 為提升OCR的準確性,基于計算機視覺和圖像處理,使用OpenCV或者Keras, TensorFlow, scikit-learn 對圖像進行預處理或者后處理。

    • scikit學習庫是使用Python訓練機器學習模型時使用的標準包。
    • Keras和TensorFlow在一個易于使用的API中提供了所有深入學習的能力。
  • 基于云的OCR API調(diào)用
  • 當Tesseract從未訓練過圖像中的某種字體;或者經(jīng)過預先訓練的“現(xiàn)成”模型均不能夠正確定位圖像中的文本;或者開發(fā)自定義OCR可能需要花費太多的精力,可以考慮使用基于云的OCR API,例如微軟Azure認知服務、Amazon RekGoNeNoint和谷歌云平臺(Google Cloud Platform GCP)API。


    缺點是付費使用;需要網(wǎng)絡連接才可以提交圖像并獲取識別結果;有延遲不能用于實時應用;并不擁有整個OCR管道,只能用提供的一部分。

    參考

    • https://www.pyimagesearch.com/2021/08/09/what-is-optical-character-recognition-ocr/

    總結

    以上是生活随笔為你收集整理的Python,OpenCV中的光学字符识别(OCR Optical Character Recognition)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。