近日小编在研究一款国外软件,奈何英文水平太差,而且软件专业性较强,很是费劲。再加上文字提取的使用场景还是比较普遍的,于是决定研究一番。
虽然使用百度翻译勉强能用,但百度图片翻译有两个问题:
一个是翻译出来的文字格式和图片上的不一致,不换行,都是放在一起的
二是部分文字识别有问题,文字中间小写的i经常丢失

说明
pytesseract 依赖 Tesseract OCR ,因此需要先安装 Tesseract OCR。
1. 下载 Tesseract OCR 并安装、配置。
2. 通过 pip 安装 pytesseract。
3. 运行代码
Tesseract OCR 安装
windows安装
1. 下载安装包
Tesseract OCR 官网地址:官方主页
下载路径一:点击官网下载 ,没有魔法的同学官网下载会比较慢

下载路径二:点击百度网盘下载

2.安装
双击下载的 .exe文件 进行安装,需要记住安装目录
默认为 C:\Program Files\Tesseract-OCR
3.配置用户环境变量
将安装路径配置到用户环境变量 Path 里即可,
提示:配置完环境变量记得重启 IDE,如果IDE开了多个窗口,都要关闭
推荐使用 windows 环境变量修改工具
4.其它语言支持
Tesseract 支持130多种语言,如果需要其它语言的支持,点 这里 下载 .traineddata 文件,放到安装目录下 C:\Program Files\Tesseract-OCR\tessdata
Linux、mac安装
参考官网:https://tesseract-ocr.github.io/tessdoc/Installation.html
pytesseract 安装
pip安装pytesseract
pip install Pillow
pip install pytesseract
实例代码1-识别英文数字
import pytesseract
from PIL import Image
# 如果报错找不到Tesseract,也可以在这里指定具体路径
# pytesseract.pytesseract.tesseract_cmd = r'D:\Program Files\Tesseract-OCR\tesseract.exe'
# 加载图片
image_path = r'textExtraction1.jpg'
img = Image.open(image_path)
# 使用 pytesseract 进行文本识别
text = pytesseract.image_to_string(img)
print(text)
效果展示(英文 数字)

实例代码2-识别中文
import pytesseract
from PIL import Image
# 加载图片
image_path = r'textExtraction2.png'
img = Image.open(image_path)
# 使用 pytesseract 进行文本识别,确保已经下载了 Tesseract 对应的多语言 .traineddata 文件
text = pytesseract.image_to_string(img, lang='chi_sim')
print(text)
效果展示(汉字 英文 数字)


实例代码3-识别中文
需要安装 opencv 进行灰度转换 和 降噪处理, pip install opencv-python
import cv2
# 读取图片
img = cv2.imread(r'textExtraction2.png')
# 灰度图
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 二值化
ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)
# 去除噪点
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3, 3))
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=2)
# 识别文字
custom_config = r'--psm 1 -c preserve_interword_spaces=1 -l chi_sim'
text = pytesseract.image_to_string(thresh, config=custom_config)
print(text)
效果展示(汉字 英文 数字)
还是使用 上个实例中的图片进行识别
