可行性分析

  1. 在 Windows 平台下使用 Python 进行文字识别是可行的。Python 提供了许多文字识别库,如 Tesseract OCR、OpenCV 和 Microsoft Azure Cognitive Services 等。其中,Tesseract OCR 是最常用的文字识别库之一,支持多种语言和多个平台。OpenCV 则是一个用于计算机视觉和机器学习的图像处理库,可以用来处理和分析屏幕截图。Microsoft Azure Cognitive Services 则提供了一整套人工智能 API,包括 OCR 和计算机视觉服务等。

  2. 因此,如果您想进行屏幕文字识别,可以使用 Python 和相关库来实现。可以使用 Python 的 PIL 库或者 PyAutoGUI 库来进行屏幕截图,然后使用 Tesseract OCR 或者 Azure Cognitive Services 进行文字识别。

  3. 下面介绍使用python的PyAutoGUI库对屏幕进行截屏,使用Tesseract OCR对截图进行文字识别的方法。

工具介绍

  • 要实现windows平台下使用python对屏幕进行文字识别的功能,需要介绍以下几个工具:

两个python库

  1. pyautogui:这是Python的一个自动操作库,用于 Python 进行屏幕截图。

  2. Pytesseract:这是Python的一个OCR库,可以与Tesseract-OCR结合使用,使您可以直接从Python中调用OCR引擎。

一个OCR引擎

  1. Tesseract-OCR:这是一个开源的OCR引擎,可以用于从图像中提取文字。

环境安装

安装python

  1. 安装 Python的windows版本:在官网 https://www.python.org/downloads/ 上下载并安装 Python。

  2. 将python的安装目录添加到系统环境变量。

  3. 测试python安装成功:打开cmd,输入python,有版本号输出证明python安装成功。

     C:\Users\user>python
     Python 3.11.2 (tags/v3.11.2:878ead1, Feb  7 2023, 16:38:35) [MSC v.1934 64 bit (AMD64)] on win32
     Type "help", "copyright", "credits" or "license" for more information.
     >>>

安装PyAutoGUI

  1. 安装python时会自动安装好pip工具,在cmd中输入以下命令安装PyAutoGUI。

  2. PyAutoGUI需要使用GUI界面(例如Windows或macOS)才能正常工作。

 pip install pyautogui

安装pytesseract

  1. 在cmd中输入以下命令安装pytesseract

 pip install pytesseract

安装Tesseract-OCR

  1. 下载并安装Tesseract OCR引擎,下载适合自己电脑的版本。

  2. 下载链接,注意尽量不要下载带dev,alpha,beta等版本,这些版本不稳定,也可能是测试版本。建议下载最新稳定版本。

    方法一:https://github.com/UB-Mannheim/tesseract/wiki
    方法二:https://digi.bib.uni-mannheim.de/tesseract/
    方法三:https://github.com/tesseract-ocr/tesseract
  3. 安装tesseract-ocr.exe时可以先不选择语言包,因为这会使下载过程比较缓慢。

  4. 安装完毕后,将安装目录添加到系统的环境变量。

  5. 检查是否安装成功:打开cmd窗口,输入tesseract -v查看版本号,输入tesseract --list-langs查看支持的语言包。

     C:\Users\user>tesseract -v
     tesseract v5.3.0.20221222
      leptonica-1.78.0
       libgif 5.1.4 : libjpeg 8d (libjpeg-turbo 1.5.3) : libpng 1.6.34 : libtiff 4.0.9 : zlib 1.2.11 : libwebp 0.6.1 : libopenjp2 2.3.0
      Found AVX2
      Found AVX
      Found FMA
      Found SSE4.1
      Found libarchive 3.5.0 zlib/1.2.11 liblzma/5.2.3 bz2lib/1.0.6 liblz4/1.7.5 libzstd/1.4.5
      Found libcurl/7.77.0-DEV Schannel zlib/1.2.11 zstd/1.4.5 libidn2/2.0.4 nghttp2/1.31.0
     C:\Users\user>tesseract --list-langs
     List of available languages in "E:\Tesseract-OCR/tessdata/" (2):
     eng
     osd
  6. 如果自己下载了其他的语言包,可以将语言包放到Tesseract-OCR安装目录的tessdata路径下,并使用tesseract --list-langs命令查询是否新增了支持的语言包。

功能实现

  • 现在,我们可以开始编写代码了,实现在windows平台下使用python语言对当前屏幕进行文字识别。

英文识别

  1. 由于Tesseract-OCR安装好后,默认已经支持英文和数字的语言包了,所以先简单通过英文和数字测试以下识别效果,

  2. 先准备一张图:004.png

     

 import pytesseract
 from PIL import Image
 ​
 # 使用 Tesseract OCR 识别文本信息
 im = Image.open('./004.png')
 text = pytesseract.image_to_string(im)
 print(text)
 #运行该程序打印输出为:Image

混合识别

  1. 要对电脑屏幕截图进行文字识别的话,势必涉及到识别中英文的问题,需要先安装中文的语言包,否则无法识别。

 import pytesseract
 import pyautogui
 from PIL import Image
 ​
 # 截取整个屏幕
 screenshot = pyautogui.screenshot()
 ​
 # 保存截图为临时文件
 screenshot.save('tmp.png')
 ​
 # 使用 Tesseract OCR 识别文本信息
 im = Image.open('tmp.png')
 text = pytesseract.image_to_string(im)
 ​
 # 寻找 "start" 字符串
 if "start" in text:
     print("Found 'start' string")
 ​
 #使用utf-8编码避免打印乱码
 print (text.encode("utf-8")) 

更多推荐