当前位置:   article > 正文

python实现图片识别文字程序_python 图片识别 内容保存为 字典

python 图片识别 内容保存为 字典

内容简介

        python利用百度文字识别功能,实现对上传的图片进行扫描,获取图片的文字信息,并生成可执行的程序。

        开发环境:Windows7+python3.7+pycharm2018.2.4(开发工具);

        目录机构:文件夹“build”、“dist”和文件“discernImg.spec”是生成exe时产生的数据;

        最终效果:

百度端创建应用

        创建过程参考《微信小程序利用百度AI实现扫描身份证获取信息功能》(把“图像识别”换为“文字识别”)。

实现过程

        一、阅读器UI设计

        1. 安装模块和配置工具,参考《python实现小说阅读器》

        2. 运行工具QtDesigner,利用QtDesigner工具箱设计出界面效果(所需要的控件可查看右边区域),保存效果为文件dc.ui;

        3. 对文件dc.ui执行pyUIC(ui转化为py代码),执行完生成文件dc.py。

        二、代码设计

        文件“discernImg.py”代码如下,具体代码解释可参考《python智能联系人管理》;

        Tips:tokenUrl更换为文字识别,详细可参考 “https://cloud.baidu.com/doc/OCR/s/Sk3h7xyad”;

  1. from PyQt5.QtWidgets import *
  2. from PyQt5.QtGui import *
  3. # 引入自定义模块
  4. import dc
  5. # 引入内置模块
  6. import sys
  7. import os
  8. # 引入第三方模块
  9. import requests, base64
  10. from PIL import Image
  11. class parentWindow(QWidget, dc.Ui_Form):
  12. # 初始化方法
  13. def __init__(self):
  14. # 找到父类 首页面
  15. super(parentWindow, self).__init__()
  16. # 初始化页面方法
  17. self.setupUi(self)
  18. # 点击选择图片
  19. self.selectImg.clicked.connect(self.openfile)
  20. # 点击查看图片
  21. self.viewImg.clicked.connect(self.viewbtn)
  22. # 选择图片执行方法
  23. def openfile(self):
  24. # 启动选择文件对话空,查找jpg以及png图片
  25. self.download_path = QFileDialog.getOpenFileName(self, "选择要识别的图片", os.getcwd(), "Image Files(*.jpg *.png)")
  26. # 判断是否选择图片
  27. if not self.download_path[0].strip():
  28. QMessageBox.information(self, '提示信息', '没有选择名片图片')
  29. pass
  30. else:
  31. # pixmap解析图片
  32. pixmap = QPixmap(self.download_path[0])
  33. # 设置图片
  34. self.imgLabel.setPixmap(pixmap)
  35. # 让图片自适应label大小
  36. self.imgLabel.setScaledContents(True)
  37. try:
  38. # 识别名片图片返回识别结果
  39. content = self.recgImg()
  40. except:
  41. QMessageBox.information(self, '提示信息', '识别错误请重新选择图片')
  42. # 识别图片的数据赋值
  43. words_result = content['words_result']
  44. # print(words_result)
  45. text = ''
  46. for item in words_result:
  47. for v in item.values():
  48. text = text + '\n' + v
  49. self.discernText.setText(text)
  50. # 识别名片图片
  51. def recgImg(self):
  52. # 获取baiduToken
  53. apikey = '你的apikey'
  54. seckey = '你的seckey'
  55. tokenUrl = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=' + apikey + '&client_secret=' + seckey
  56. res = requests.get(url=tokenUrl, headers={'content-type': 'application/json; charset=UTF-8'}).json()
  57. baiduToken = res['access_token']
  58. '''
  59. 图片识别(API)
  60. '''
  61. request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/webimage"
  62. # 二进制方式打开图片文件
  63. f = open(self.download_path[0], 'rb')
  64. img = base64.b64encode(f.read())
  65. params = {"image": img}
  66. # access_token = '[调用鉴权接口获取的token]'
  67. request_url = request_url + "?access_token=" + baiduToken
  68. headers = {'content-type': 'application/x-www-form-urlencoded'}
  69. response = requests.post(request_url, data=params, headers=headers)
  70. if response:
  71. # print(response.json())
  72. return response.json()
  73. # 点击查看图片显示大图功能
  74. def viewbtn(self):
  75. if self.download_path:
  76. # 使用电脑中的看图工具打开图片
  77. img = Image.open(self.download_path[0])
  78. # 显示图片
  79. img.show()
  80. else:
  81. QMessageBox.information(self, '提示信息', '先选择名片图片')
  82. if __name__ == '__main__':
  83. # 每一个PyQt5应用都必须创建一个应用对象
  84. app = QApplication(sys.argv)
  85. # 初始化页面
  86. window = parentWindow()
  87. # 显示首页
  88. window.show()
  89. sys.exit(app.exec_())

        三、打包成exe

        在项目下执行语句“pyinstaller -F discernImg.py”,打包成功后项目中新增dist文件,exe文件即为打包后的程序。

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号