Python change life | utilisation de modèles reconnus par ocr

Zhu xiaowu 2021-09-15 04:02:28
python change life utilisation mod


Bonjour tout le monde,Je suis le petit cinq

C'estPythonChanger la vieTitre IV de la série,InCi - dessus Une solution à un besoin ,Prêt à l'emploipython Identifier le code à barres pour obtenir le numéro de commande Express .

J'ai pensé à deux solutions. ,Alors passons à la deuxième solution aujourd'hui.

Précédemment dans

En termes simples,Nous essayons juste d'identifier le numéro de la liste de livraison dans le fichier de capture d'écran.

Méthode précédente J'ai récupéré le numéro de livraison. , Cette fois, on espère que ça marchera. OCRLa méthode pour extraire le destinataire correspondant au numéro de commande.

OCRIdentification

UtilisationPython Reconnaissance précise des mots , Je recommande d'abord l'interface Baidu , Les étapes de configuration spécifiques peuvent être vues Articles précédents.

Après une configuration réussie,Oui.AppID、API Key、Secret Key Messages clés .

BaiduOCR Le résultat est une liste .

Au début, j'ai essayé d'identifier toute la capture d'écran, Puis sélectionnez un élément dans la liste des résultats .Il s'est avéré que le nombre d'éléments de liste retournés par différentes captures d'écran était différent,Ce qui veut dire que je ne peux pas obtenir la valeur que je veux.

Enfin, j'ai trouvé un autre compromis:C'est - à - dire d'abord la capture d'écran du destinataire et le numéro de la Feuille de livraison en deux images,Utilisez l'interface Baidu pour identifier ces deux images séparément.

Donc nous avons juste besoin de construire unOCRFonction qui identifie un seul bloc de texte.

#La tienne. APPID AK SK
APP_ID = '22704919'
API_KEY = '1f2wAABTYBmXkbx1qXbPXDm0'
SECRET_KEY = '***************************'
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# Identification de l'interface Baidu 
def get_words_result(filePath):
image = open(filePath, 'rb')
image1 = image.read()
text_list = client.general(image1)
text_list = text_list['words_result'][0]['words']
image.close()
return text_list
Copier le Code

Plus tard, nous avons recadré les images clés,Appel directget_words_result() La fonction reconnaît le contenu correspondant .

Couper l'image

Découper les images ici, j'utilise PILModule,C'est...python Bibliothèque de traitement d'images de tiers dans ,Beaucoup d'opérations liées au traitement d'images peuvent être effectuées.

Implémenter des images coupées , Nécessite une référence lors de l'utilisation Image,UtiliserImageDansopen(file) Méthode pour retourner une image ouverte ,Reconnectercrop() Fonction pour couper .

crop([x1,y1,x2,y2])
Copier le Code

cropLes valeurs correspondantes sont les coordonnées des pixels des deux points supérieurs gauche et inférieur droit de l'image de position dans l'image globale

Culture spécifique + L'énoncé d'identification est le suivant: :

def get_data(filePath):
img = Image.open(filePath)
ocr_results = []
basic_path = r"D:\python_code\Code à barres\Provisoire"
crop_1 = img.crop((242,739,678,813)) #cropTaille
crop_1.save(basic_path+"1.png")
crop_2 = img.crop((88,1052,229,1108)) #cropTaille
crop_2.save(basic_path+"2.png")
for i in range(1, 3):
imgpath = basic_path + str(i) + '.png'
msg_info = get_words_result(imgpath) # Texte d'identification de la fonction d'appel 
ocr_results.append(msg_info)
os.remove(imgpath) # Supprimer l'image de la culture temporaire 
time.sleep(3)
return ocr_results
Copier le Code

J'ai créé un nouveau dossier temporaire dans le dossier original"D:\python_code\Code à barres\Provisoire", Image utilisée pour stocker la culture temporaire 12.Puis appelezocr La fonction identifie deux images à tour de rôle , Et enregistrer les résultats dans la Liste ocr_resultsMoyenne.

Enfin,UtiliserosDu moduleremove()La fonction supprime les deux images générées par cette coupure temporaire.

Identification des lots

Après les efforts précédents , L'identification des lots est facile à obtenir .

D'abord.osTraverser l'image! Cette fois, il n'y a plus de chemin chinois. , Donc vous n'avez pas besoin de changer de nom .

#Traverser l'image
jpgs = []
path = os.getcwd()
for i in os.listdir(path): #Obtenir la liste des fichiers
jpgs.append(i)
# Utilisé pour stocker les résultats d'identification 
data_m = pd.DataFrame(columns=['expres','sname'])
# Identification des lots 
for i in jpgs:
a = get_data(i)
data_m.loc[len(data_m)] = a
data_m
Copier le Code

Mise en œuvre!

Quand on est!

Comme le montre la figure ci - dessus,Nous n'avons pas seulement identifié le numéro de la lettre de livraison,L'information sur le destinataire correspondant est également retirée

Pour moi, Améliore considérablement l'efficacité du travail .

Résumé

Toute l'affaire ,Nous avons utilisé deux méthodes pour résoudre le problème, Chacun a ses avantages et ses inconvénients .

  • Première catégorie,Code à barres d'identification100%Exact, Mais il n'a obtenu que le numéro de livraison. .

  • Deuxième type, Les mots de reconnaissance sont sujets à des problèmes ,L'avantage est que l'information correspondante sur le destinataire peut être obtenue simultanément.

Mais Xiao Wu l'a adopté. Couper les images clés Méthode,Beaucoup plus.OCR Précision .Enfin, j'ai choisi la deuxième méthode moi - même,Pour faciliter l'envoi de livres à tout le monde et la rétroaction en temps opportun sur le numéro de livraison express.

Vieux fer.,Si vous voulez en voir plusPythonChanger la vie Des problèmes réels , Un petit coup de pouce dans le coin inférieur droit de cet article.

Si vous avez aussi des problèmes répétitifs que vous avez toujours voulu résoudre,Bienvenue dans la section commentaires pour me dire que tout le monde discute ensemble

版权声明
本文为[Zhu xiaowu]所创,转载请带上原文链接,感谢
https://pythonmana.com/2021/09/20210915040202551e.html

  1. 程序員是這樣學習【中藥學】知識的,先用python采集分析一波
  2. Python - pydantic(2)嵌套模型
  3. Python - 面向对象编程 - __dict__
  4. Python - 面向对象编程 - 反射 hasattr、getattr、getattr、delattr
  5. Python - 面向对象编程 - 实战(6)
  6. Python - 面向对象编程 - 魔术方法(双下划线方法)
  7. Python - 面向对象编程 - __new__() 和单例模式
  8. Python - 面向对象编程 - __call__()
  9. Python - repr()、str() 的区别
  10. Python - 面向对象编程 - __repr__()
  11. Python - eval()
  12. 用 Django REST framework 来实现一次性验证码(OTP)
  13. Python code checking tool (static code review)
  14. Python QT GUI Design: overview of UI interface visualization components and properties (Fundamentals - 3)
  15. 【算法学习】1863. 找出所有子集的异或总和再求和(java / c / c++ / python / go / rust)
  16. [apprentissage de l'algorithme] 1863. Trouver la somme Xor de tous les sous - ensembles (Java / C / C + + / python / go / Rust)
  17. Python code checking tool (static code review)
  18. Python 万能代码模版:爬虫代码篇
  19. Modèle de code universel Python: Code crawler
  20. 收藏 | Python 之 Pandas系统性总结!
  21. Take you to learn more about nginx basic login authentication: generating passwords using Python
  22. 超硬核Python避坑学习方案奉上!入门到就业一篇就搞定!
  23. Talk about how JMeter executes Python scripts concurrently
  24. Talk about how JMeter executes Python scripts concurrently
  25. Talk about how JMeter executes Python scripts concurrently
  26. python内置函数通过字符串的方式来执行函数代码块,类似java的反射机制相当强大!
  27. python内置函数通过字符串的方式来执行函数代码块,类似java的反射机制相当强大!
  28. python內置函數通過字符串的方式來執行函數代碼塊,類似java的反射機制相當强大!
  29. Les fonctions intégrées Python exécutent des blocs de code de fonction à travers des chaînes, et les mécanismes de réflexion comme Java sont assez puissants!
  30. Python module 1
  31. Python tip: use namedtuple instead of manually created classes
  32. Python - poetry(3)配置项详解
  33. Python - poetry(3)配置项详解
  34. Python - poetry(3)配置項詳解
  35. Python - poetry(3)配置項詳解
  36. Python - détails de l'élément de configuration Poetry (3)
  37. Python - détails de l'élément de configuration Poetry (3)
  38. Python案例实战,pygame模块,Python实现字母代码雨
  39. Python calculation vector angle code
  40. Python基础面试题解读|《Python面试100层》|第1层
  41. 面对小白的pandas命令手册+练习题【三万字详解】
  42. 面對小白的pandas命令手册+練習題【三萬字詳解】
  43. Face au Manuel de commande pandas de Xiaobai + question d'exercice [30 000 mots pour plus de détails]
  44. Interprétation des questions d'entrevue de base Python | 100 couches d'entrevue Python | couche 1
  45. Python data structure and algorithm (17) -- merge sort
  46. Les fonctions intégrées Python exécutent des blocs de code de fonction à travers des chaînes, et les mécanismes de réflexion comme Java sont assez puissants!
  47. Python笔记-uiautomator2截图点击,OpenCV找图
  48. Python文档阅读笔记-OpenCV中Template Matching
  49. Python笔记-利用OpenCV的matchTemplate屏幕找图并使用pyautogui点击
  50. Python筆記-利用OpenCV的matchTemplate屏幕找圖並使用pyautogui點擊
  51. Notes python - utilisez l'écran matchtemplate d'OpenCV pour trouver des images et cliquez sur
  52. Notes de lecture de documents python - Matching de modèles dans OpenCV
  53. Notes python - capture d'écran de l'automate 2 Cliquez pour ouvrir la vue
  54. python链接云服务器的mysql8
  55. python鏈接雲服務器的mysql8
  56. Mysql8 pour les serveurs Cloud liés Python
  57. Python资源大集合,要的话可以拿走!
  58. ️万字【Python基础】保姆式教学️,小白快速入门Python!
  59. ️萬字【Python基礎】保姆式教學️,小白快速入門Python!
  60. Wanzi [base Python] Baby - sitting Teaching, Little White Quick Start Python!