tesseract图片识别库的简单操作
https://digi.bib.uni-mannheim.de/tesseract/ 下载连接中有dev的是分支,稳妥选择没有dev的4.0最新版本 解压到D\E盘下 一直next安装,选择安装到 E:\tesseract\Tesseract-OCR 设置系统路径 变量名|TESSDATA_PREFIX 值(value)|E:\tesseract\Tesseract-OCR\tessdata 设置tesseract命令路径 在系统环境变量(Path)中添加E:\tesseract\Tesseract-OCR cmd切换到存放图片路径,识别带有英文(默认支持)的图片,tesseract 1.png a 这条命令的意思是:找到1.png图片并把识别的数据存放到a.txt文件中 下载培训中文数据:https://github.com/tesseract-ocr/tesseract/wiki/Data-Files (chi_sim) 查看所有命令 tesseract -h 查看所有培训语言数据 tesseract --list-langs 识别带有中文的图片:tesseract 2.png b -l chi_sim 这条命令的意思是:找到2.png图片并用中文识别之后把数据存放到b.txt
1.Python下tesseract的简单使用
import pytesseract from PIL import Image # 获取tesseract下的可执行文件 pytesseract.pytesseract.tesseract_cmd = r"E:\tesseract\Tesseract-OCR\tesseract.exe" # 获取将要识别的图片 image = Image.open(r"E:\imgs\3.png") # 开始识别图中文字,lang="带选择语言", 默认英文 text = pytesseract.image_to_string(image, lang="chi_sim") print(text)
2.网络下载验证码识别
import pytesseract from urllib import request from PIL import Image import time def main(): # 获取图片识别可执行文件路径 pytesseract.pytesseract.tesseract_cmd = r"E:\tesseract\Tesseract-OCR\tesseract.exe" url = "验证码地址" while True: # 先下载验证图片到本地 request.urlretrieve(url, r"E:\imgs\captcha.png") # 打开已下载验证图片地址 image = Image.open(r"E:\imgs\captcha.png") # 开始识别图中文字 text = pytesseract.image_to_string(image) print(text) time.sleep(2) if __name__ == '__main__': main()
3.tesserocr识别验证码
"""图片识别 http://my.cnki.net/elibregister/CheckCode.aspx 获取图片地址 """ import tesserocr import requests from PIL import Image from urllib.request import urlretrieve url = "http://my.cnki.net/elibregister/CheckCode.aspx " # 调用urllib.request下的urlretrieve()方法请求图片地址并保存图片 urlretrieve(url, "code.png") # 1.识别概率不高,容易受到线条、模糊化干扰 image = Image.open("code.png") # 读取图片为Image对象 # 调用tesserocr模块下的image_to_text()方法识别出图片中的字符串 result = tesserocr.image_to_text(image) print(result) # 2.经过转灰度和二值化等操作识别概率更高 image = image.convert("L") # 调用Image对象下的convert()方法,传入L。表示将彩色图像转换为灰度图像 threshold = 130 # 指定二值化的阙值 table = [] for i in range(256): # 根据调色板的默认颜色数遍历 if i < threshold: # 根据比指定阙值大和小分别添加二值化数字到列表 table.append(0) else: table.append(1) # 调用Image对象下的point()方法传入包含256个频段的二值化列表对图片进行处理,"1"为输出模式的一种 image = image.point(table, "1") # 调用Image对象下的show()方法展示图片 image.show() # 调用tesserocr模块下的image_to_text()方法识别出图片中的字符串 result = tesserocr.image_to_text(image) print(result)
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步