Python爬虫:tesseract识别图片验证码

简介: Python爬虫:tesseract识别图片验证码

安装tesseract

mac环境下:


$ brew install tesseract

测试


$ tesseract -v
tesseract 3.05.01

直接使用

$ tesseract test.png output #识别test.png的图片,把结果放到output.txt中

图片

image.png


识别结果


Hello world!
1234

python接口

安装模块


$ pip install pillow
 $ pip install pytesseract

代码实现


# -*- coding: utf-8 -*-
from PIL import Image
import pytesseract
img = Image.open("tesseract_demo.png")
img = img.convert("L")  # 转为黑白图
ret = pytesseract.image_to_string(img)
print(ret)
"""
Hello world!
1234
"""

如果没有识别出内容,使用命令行方式识别,看下报错

如果报错 empty page, 加一些空白就可以


# -*- coding: utf-8 -*-
from PIL import Image
import pytesseract
img = Image.open("tesseract_demo.png")
# 新建一个比原图大一倍左右的白色画布,将原图贴到白色背景图中
image = Image.new("RGB", (300, 200), "white")
image.paste(img, (50, 50))
# 接下来要使用新合成的图
image = image.convert("L")  # 转为黑白图
ret = pytesseract.image_to_string(image)
print(ret)

参考: OCR Tesseract 识别报 empty page解决办法


识别中文

需要下载中文包:

https://pan.baidu.com/s/10dP9ZJMnwX4yOVz6K4jykQ#list/path=%2F

密码 v13f

注意报错的路径,比如mac下:


/usr/local/Cellar/tesseract/3.05.01/share/tessdata/chi_sim.traineddata

把下载的文件chi_sim.traineddata 拷贝到这个目录下即可


import pytesseract
import cv2
def ocr_text(image_name):
    img = cv2.imread(image_name)
    gray = cv2.cvtColor(src=img, code=cv2.COLOR_BGR2GRAY)
    ret, th = cv2.threshold(src=gray.copy(), thresh=236, maxval=255, type=0)
    result = pytesseract.image_to_string(th, lang='chi_sim')
    return result
if __name__ == '__main__':
    image = "out-9-22.png"
    print(ocr_text(image))

识别效果还可以

cv2模块也可以用 PIL 替代


参考


Mac上tesseract-OCR的安装配置

python+pytesseract 中文识别

相关文章
|
19天前
|
Python
Python实用记录(六):如何打开txt文档并删除指定绝对路径下图片
这篇文章介绍了如何使用Python打开txt文档,删除文档中指定路径的图片,并提供了一段示例代码来展示这一过程。
25 1
|
20天前
|
数据采集 缓存 Java
Python vs Java:爬虫任务中的效率比较
Python vs Java:爬虫任务中的效率比较
|
19天前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
90 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
1天前
|
数据采集 存储 机器学习/深度学习
构建高效的Python网络爬虫
【10月更文挑战第25天】本文将引导你通过Python编程语言实现一个高效网络爬虫。我们将从基础的爬虫概念出发,逐步讲解如何利用Python强大的库和框架来爬取、解析网页数据,以及存储和管理这些数据。文章旨在为初学者提供一个清晰的爬虫开发路径,同时为有经验的开发者提供一些高级技巧。
5 1
|
4天前
|
数据采集 存储 数据库
Python中实现简单爬虫的入门指南
【10月更文挑战第22天】本文将带你进入Python爬虫的世界,从基础概念到实战操作,一步步指导你如何使用Python编写一个简单的网络爬虫。我们将不展示代码示例,而是通过详细的步骤描述和逻辑讲解,帮助你理解爬虫的工作原理和开发过程。无论你是编程新手还是有一定经验的开发者,这篇文章都将为你打开一扇通往数据收集新世界的大门。
|
4天前
|
数据采集 Python
python爬虫抓取91处理网
本人是个爬虫小萌新,看了网上教程学着做爬虫爬取91处理网www.91chuli.com,如果有什么问题请大佬们反馈,谢谢。
20 4
|
19天前
|
数据采集 Web App开发 数据可视化
Python爬虫教程:Selenium可视化爬虫的快速入门
Python爬虫教程:Selenium可视化爬虫的快速入门
|
19天前
|
Python
Python实用记录(四):os模块-去后缀或者改后缀/指定目录下图片或者子目录图片写入txt/csv
本文介绍了如何使用Python的os模块来操作文件,包括更改文件后缀、分割文件路径和后缀、将指定目录下的所有图片写入txt文档,以及将指定目录下所有子目录中的图片写入csv文档,并为每个子目录分配一个标签。
14 1
|
文字识别 开发工具 Python
Python编程:通过百度文字识别提取表格数据
Python编程:通过百度文字识别提取表格数据
220 0
Python编程:通过百度文字识别提取表格数据
|
7天前
|
安全 数据处理 开发者
Python中的多线程编程:从入门到精通
本文将深入探讨Python中的多线程编程,包括其基本原理、应用场景、实现方法以及常见问题和解决方案。通过本文的学习,读者将对Python多线程编程有一个全面的认识,能够在实际项目中灵活运用。