tft每日頭條

 > 健康

 > python關于驗證碼識别的庫

python關于驗證碼識别的庫

健康 更新时间:2025-04-29 09:41:23

最近看到複旦大學信息科學與工程學院博士生利用Python OCR和正則表達式開發一段代碼可以快速的核查幾百人的核酸結果。OCR光學字符識别軟件開發時基本都是調用的别人的OCR文字識别服務。根據經驗OCR的識别有一定的難度最少對圖片的清晰度是有要求。心想Python的OCR文本識别庫已經發展的這麼高精準了麼?耳聽為虛動手為實開始寫代碼。今天就為大家介紹下利用Python OCR庫識别防疫健康碼截圖的文本信息。

1、安裝OCR庫

#這次裝了不少的庫主要是庫之間有依賴 pip3 install common dual tight data prox shapely paddle paddleocr paddlepaddle

2、文本識别

from paddleocr import PaddleOCR, draw_ocr from PIL import Image ocr = PaddleOCR(use_angle_cls=True, lang='ch') img_path = '/Users/linux/Downloads/WechatIMG1.jpeg' result = ocr.ocr(img_path, cls=True) city_exist = False for text in result: exist = False #print(text[1][0]) if text[1][0].find("動态行程卡") > -1: exist = True elif text[1][0].find('更新于') > -1: exist = True elif text[1][0].find('14天内到達') > -1: city_exist = True elif text[1][0].find("結果包含") > -1: city_exist = False if exist == True or city_exist == True: print(text[1][0]) if text[1][0].find("綠色行程卡") > -1: print("綠色") elif text[1][0].find("紅色行程卡") > -1: print("紅色")

3、健康碼識别結果

python關于驗證碼識别的庫(PaddleOCR庫識别防疫健康碼文本信息)1

(圖一)

python關于驗證碼識别的庫(PaddleOCR庫識别防疫健康碼文本信息)2

(圖二)

python關于驗證碼識别的庫(PaddleOCR庫識别防疫健康碼文本信息)3

(圖三)

小程序

健康碼截圖

識别結果

通信行程卡

(如上圖一)

綠色

xxx****xxxx的動态行程卡

更新于:2022.04.1115:15:42

您于前14天内到達或途經:河北省xxxx市

北京健康寶

(如上圖三)

2022年04月11日

15:17:54

未見異常①

名:

x*

身份證号:

查詢時間:

04-1115:17

失效時間:

04-1124:00

河北健康碼

(如上圖二)

河北健康碼

姓名

x*x

身份證号

xxxx**********xxxx

2022-04-1115:15:58

核酸檢測:陰性(2021-11-26

檢測機構:北京xxxx醫院(西城院區)

4、顔色識别

代碼中我們是根據識别的文本來判斷是綠碼還是紅碼,難免根據小程序的升級判斷結果有誤。希望可以根據截圖的圖片的主要顔色來判斷綠碼還是紅碼保險準确些。

import colorsys import PIL.Image as Image def get_dominant_color(image): max_score = 0.0001 dominant_color = None for count,(r,g,b) in image.getcolors(image.size[0]*image.size[1]): # 轉為HSV标準 saturation = colorsys.rgb_to_hsv(r/255.0, g/255.0, b/255.0)[1] y = min(abs(r*2104 g*4130 b*802 4096 131072)>>13,235) y = (y-16.0)/(235-16) #忽略高亮色 if y > 0.9: continue score = (saturation 0.1)*count if score > max_score: max_score = score dominant_color = (r,g,b) return dominant_color if __name__ == '__main__': image = Image.open('/Users/linux/Downloads/WechatIMG1.jpeg') image = image.convert('RGB') print(get_dominant_color(image)) 執行結果: (83, 164, 108)[RGB綠色]

5、結論

根據我們識别通信行程卡、北京健康寶、河北健康碼的截圖。整體OCR的識别還是很準确的。基本上重要的我們想要的數據都可以識别出來,以後可以多用PaddleOCR庫識别圖片。大家有什麼不同的觀點可以提出來溝通讨論。

感謝大家的評論、點贊、分享、關注。。。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关健康资讯推荐

热门健康资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved