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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

驾驶证/行驶证信息提取与识别

發布時間:2024/8/1 编程问答 63 豆豆
生活随笔 收集整理的這篇文章主要介紹了 驾驶证/行驶证信息提取与识别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言

???????最近想要玩一個關于駕駛證和行駛證信息提取的小項目,于是就準備開始學習相關的知識。因為之前對身份證號碼提取有過了解,所以一開始整體的概念還是有的,比如這種項目需要使用opencv、ocr或者深度學習模型等等。于是就帶著這些僅存的印象開始了這個項目。

二、搜集資料

???????在搜索實際項目之前,我先看了關于駕駛證和行駛證識別的基本原理。基本上就是分成兩部分:使用opencv獲取駕駛證信息在圖片中的區域,然后截取出來使用文字識別工具進行識別。參考的主要是下面這兩篇文章:

  • 基于Opencv和Tesseract的行駛證識別系統設計
  • OCR - 行駛證識別

???????剛開始我習慣性的直接去百度搜索,想要搜索一些開源的項目,但是我發現并沒有多少可以使用的資源。大多是一些只講基本原理或者是身份證識別項目。于是我換了個方向,準備去Github上去找,真的找了好半天。雖然開源項目不少,但是還是剛才說的那個問題,很多都是基于國外駕駛證做的項目,又或者是一些python和C++之外的語言寫的項目(因為我之前只深入學習過C++和python),其他不熟悉的語言如果需要修改的話很不方便。

三、實現方式①(調用百度OCR API)

???????最后我只找到了一個比較合適的,這是一個基于百度文字識別(OCR)服務的項目,它通過百度OCR服務提供的一系列API來實現各種場景的文字識別。主要有以下幾種服務:

  • 通用文字識別
  • 卡證文字識別
  • 票據文字識別
  • 汽車場景文字識別
  • 教育場景文字識別

該項目把這所有的服務整合到了一塊,項目結構比較清晰,也比較合理。模塊劃分的也很好,使用起來方便,如果需要修改代碼也比較方便。現在把該項目的Github鏈接放出來:BaiduTextApi。

???????然后我大致看了一下這個項目的結構,其實還是很清晰明了的,而且是用python寫的。并且結合百度OCR提供的官方API技術文檔,弄明白了百度OCR服務的使用方式,也弄明白了該項目是如何使用的。

???????最后根據具體的需求,簡單的修改了一下代碼就可以使用了。但是有一點需要注意的是,既然是百度的OCR服務,正常來說是要收費的,也就是你需要花錢來獲取API使用時所需的一些信息,這個你看了官方API文檔之后就知道是啥意思了。至少我目前是這么理解的,就是當你的賬號有使用這些服務的權限的時候,你就可以獲得請求服務所必不可少的這幾條信息。

四、實現方式②(使用OpenCV和離線OCR脫機運行)

???????其實上述第一種實現方式有一個局限性(是否局限取決于你自己的實際需求),那就是必須聯網才能夠工作。如果你想要脫機運行,那么該項目就不太合適了,這個時候就需要尋求其他的解決辦法了。接下來就來簡單的說一下我還在做的一個脫機運行的識別項目。

???????該項目主要分為以下幾個部分:

  • 原始圖片的透視變換,為了方便后面使用固定位置法截取各部分的內容;
  • 使用固定位置法截取各部分信息,方便后續的字符分割;
  • 對截取后的每一部分的內容進行字符分割,其中字符分割中使用到了opencv中的各種形態學操作;
  • 對分割之后的每一個字符單獨進行OCR識別

目前前面三步都可以比較好的實現,雖然還有一些瑕疵和改進的空間。而存在的問題就是第四步效果不是太好。其影響因素主要有兩個:

  • 原始圖片清晰度不夠,這個取決于你怎么采集圖片或者說你的使用場景是什么;
  • 中文文字OCR識別精度低,訓練不夠充分

針對以上兩個問題,其中第一個要么你采集更加清晰的圖片,要么對圖片做一些圖像增強的預處理使其更加清晰,這個暫且不討論。下面主要來說一下第二個問題,主要有以下幾種思路:

  • 第一種是,直接更換OCR工具,最開始使用的是tesseract,這個對于中文的識別率確實感人,尤其是清晰度不夠的情況下。我們可以考慮使用EasyOCR, cnocr或者是百度的PaddleOCR。這幾種都是訓練的比較好的,對中文更加的友好,識別率也更高。
  • 第二種思路就是我們自己去訓練OCR,在Github也有不少支持訓練自己的數據集的項目,PaddleOCR就是其中之一。下面把我找的幾個支持訓練的OCR項目的鏈接貼出來:
    cnocr
    chinese_ocr
    PaddleOCR
    crnn_ctc_ocr_tf
    CRNN_Chinese_Characters_Rec

以上提供的項目僅供參考,我自己大致看了一下,都是支持訓練的,但可能所需環境不同,訓練的復雜程度也不同。那么我就另開一篇簡單記錄一下以上所說的各OCR項目訓練時應該注意的一些東西。

五、實現方式②的改進版

在使用方式2實現的時候,發現效果一直不是很好,究其原因,是因為透視變換需要尋找駕駛證的輪廓,而在尋找輪廓的時候受到背景的干擾比較強。而且后面采取的是固定區域截取各部分信息的方法,一旦透視變換的結果不是特別理想,那么截取出的各部分信息的區域就會偏差很大。所以,后來沒有去掉透視變換的步驟,而是在透視變換之后,將固定區域截取變成了相對位置截取。因為各部分的信息的相對位置是不變的,如果使用文本檢測檢測出一些比較容易檢測的區域的位置,那么就可以根據相對位置獲得其他區域的具體位置。改進方法的步驟如下:

  • 對傳入的照片進行透視變換或者其他矯正操作,如旋轉,以便于后續操作。
  • 在上述操作的基礎上,對照片進行區域截取,也即截取出各部分信息,然后用于后續的識別操作。區域截取采取的是文本檢測+相對位置結合的方式。之所以采取這種結合的方式,是為了減少文本檢測的誤差,但是如果文本檢測效果非常好,也可以完全使用文本檢測。
  • 在上述操作的基礎上,對截取到的每部分區域進行字符分割,單個字符識別的話,有時候識別率會更高。
  • 對圖像做一些增強操作,可能有助于識別率的提高。
  • 對獲取到的每個字符單獨進行識別或者每塊區域整體識別。

六、訓練自己的OCR模型

1、 PaddleOCR

項目地址:https://github.com/Alex-1997-Wzx/PaddleOCR

這個項目兼顧了文字檢測文字識別,所以如果你有足夠的數據集,是可以訓練的很好的,畢竟行駛證/駕駛證它們有一定自己的特點,比如照片顏色,字體等等,而且區域都是固定的。我對這個項目的理解主要分為以下幾個部分:

1)、如果你想直接使用 ,不想訓練,那么你可以按照文檔說明安裝相應的環境,然后直接按照使用說明進行預測推理即可。如果你想要部署在端側,比如樹莓派上,文檔中也提供了在端側部署的例子,只需要類比其操作就可以一步一步的在端側完成預測推理。其中使用到了Paddle Lite,它是輕量化的推理引擎,可以提升在端側的推理速度。其中有幾點需要注意的是:

  • 正常推理的時候,我們可以直接運行PaddleOCR / tools / infer路徑下的幾個文件,分別有文字檢測程序,文字識別程序以及檢測加識別的程序。這些程序使用的都是inference模型,該模型是預測推理時使用的非常重要的文件,當我們自己訓練模型的時候,也需要先把訓練好的模型轉換成inference模型,然后才能開始預測推理。也就是說,它是預測推理所直接調用的文件,非常重要,具體使用看文檔即可。

  • 當我們在端側直接使用的時候,也需要使用inference模型,不過中間又多了一步,還需要將inference模型轉換成opt模型。此外,使用的推理引擎也從PaddlePaddle變成了輕量化的Paddle Lite。不過提供的案例是C++版本的,我覺得使用起來不是太方便,如果你要將整個項目作為一個模塊去實現一些邏輯比較麻煩。這個時候一個很重要的東西就派上用場了,那就是Paddle Lite,我們可以使用其提供的各種API(鏈接奉上:Welcome to Paddle-Lite’s documentation!),里面有多種語言多種使用方式可供選擇。而我們只需要獲取由PaddlePaddle深度學習框架產出的模型文件,就可以結合所提供的API一步一步的在端側實現預測推理。

2)、如果你想要自己訓練模型,那么也可以,這個詳細的步驟,以及數據集的組織形式在文檔中都有說明。我們只需要對訓練代碼稍作修改,使其訓練完成之后將模型保存起來就可以了,之后我們就可以直接使用該保存的已訓練模型,結合Paddle Lite提供的API在端側預測推理。當然也可以運行PaddleOCR / tools / infer路徑下的幾個文件,使用訓練得到的inference模型直接進行預測推理。

2、 CRNN_Chinese_Characters_Rec

項目地址:https://github.com/Alex-1997-Wzx/CRNN_Chinese_Characters_Rec

這個項目只有文字識別的部分,具體的訓練和測試方法可以參考該項目自己提供的教程。這里我只再簡單的說一下需要注意的地方:

1)、一共有四個需要我們自己提供的東西:

  • 含有多張訓練圖片的文件夾,這些圖片里都包含文字
  • 包含大量字符的char.txt文件,也即字符庫
  • 包含訓練圖片名稱 圖片中的字符對應的索引 信息的train.txt
  • 包含測試圖片名稱 圖片中的字符對應的索引 信息的test.txt

2)、在train.txt和test.txt中,第一段內容是圖片的名稱,因為之前我們已經提供過訓練圖片所在的文件夾路徑,所以這里直接提供圖片名稱即可;第二段內容是圖片中的每一個字符(按順序)對應的自己在字符庫char.txt中的索引。

3、 chinese_ocr

項目地址:https://github.com/YCG09/chinese_ocr

這個項目有CTPN文字檢測部分和DenseNet文字識別部分,這兩部分都可以自己進行訓練。

  • 先說CTPN文字檢測,這部分提供的數據集鏈接失效了,我沒有找到,所以就無法知道數據集如何組織的,所以這個暫且就不自己訓練了。而且提高識別率主要是需要重新訓練文字識別部分,所以文字檢測我們可以直接使用作者已經訓練好的模型。
  • DenseNet文字識別部分,如果我們想要訓練自己的數據集,我們就下載教程中提供的數據集,看一下數據集組織形式,按照其所述方法進行訓練即可。
4、crnn_ctc_ocr_tf

項目地址:https://github.com/bai-shang/crnn_ctc_ocr_tf

這個項目只有CRNN文字識別部分,并且支持訓練。訓練數據集的組織方式是如下的圖片路徑 文字內容的形式。可以使用自己的數據集按照這個形式進行組織,訓練自己的數據集。還需要注意的是,訓練時該項目會把數據集轉變成tfrecord的形式。

90kDICT32px/1/2/373_coley_14845.jpg coley 90kDICT32px/17/5/176_Nevadans_51437.jpg nevadans

總結

以上是生活随笔為你收集整理的驾驶证/行驶证信息提取与识别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。