基于深度学习OpenCV与python进行字符识别
重磅干货,第一时间送达
字符识别:
字符识别程序有助于准确的从文本中识别出每个文本元素。
通过应用深度学习算法,可以准确的识别图像中字符或文本元素的并对其进行分类。这些字符一般有很大区别。
当我们使用普通技术来识别字符时,可能会在特定点上出现一些错误。如果我们使用基于深度学习的OpenCV算法将给出有效的输出。
对于运行模型的必须安装由Google作为光学字符识别引擎开发的tesseract。
pip install pytesseract
OpenCV:
OpenCV是一种一项基本技术,我们主要利用他来消除的噪声以便进一步执行数据操作。
Open CV是深度学习技术领域中使用最广泛的算法。
它极大地依赖于受过训练的数据,并有助于识别图像中存在的文本。开放式简历使算法丢失的准确性变成一幅图画。灰度等级在字符识别领域提供了有效的分类。因此,我们特此导入所有必要的软件包,以使我们的模型可以正常使用。
为了在您的本地计算机上安装OpenCV,请使用以下命令...
pip install opencv-python
图像可以直接读取到代码中吗?
· 让我们讨论影响识别字符的因素:
· 图像中的噪声会导致许多错误识别字符的因素。为了确保无噪音,我们在代码中消除了识别。
· 当图像不是高分辨率时,识别将失败。因此,为了获得准确的结果,最好拍摄高分辨率的图像。
· 有时图像的角度也会出现缺陷。
· 在假定文本时,图像的反射会导致错误。如此多的字母“ F”被识别为“ P”。
· 如果代码无法训练字体,字体也会改变结果。
· 各种图像具有本领域的各种表示风格,因此,当存在更多肤色或多种颜色时,会对图像中的识别文本做出不正确的假设。
考虑到以上所有因素,必须在所有测试用例通过的地方相应地构建代码。
使用OpenCV识别字符的Python代码:
#import all the packages
import cv2
import numpy as np
import pytesseract
from PIL import Image
# path of pytesseract execution folder
pytesseract.pytesseract.tesseract_cmd = 'C:\Program Files\Tesseract-OCR\tesseract.exe'# Path of image
main_path = r'qu12.png'
def get_string(pic_path):
# Reading picture with opencv
pic = cv2.imread(pic_path)# grey-scale the picture
pic = cv2.cvtColor(pic, cv2.COLOR_BGR2GRAY)# Do dilation and erosion to eliminate unwanted noises
kernel = np.ones((1, 1), np.uint8)
pic = cv2.dilate(pic, kernel, iterations=20)
pic = cv2.erode(pic, kernel, iterations=20)# Write image after removed noise
cv2.imwrite(main_path + "no_noise.png", pic)# threshold applying to get only black and white picture
pic = cv2.adaptiveThreshold(pic, 300, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 31, 2)# Write the image for later recognition process
cv2.imwrite(main_path + "threshold.png", pic)# Character recognition with tesseract
final = pytesseract.image_to_string(Image.open(main_path + "threshold.png"))return final
显示最终输出:
print(get_string(src_path))
输入和输出:
在这里,我们给出输入到代码中的输入和输出,以便稍后执行代码。
输入:
从互联网上获取样本识别
输出:
执行代码后的屏幕截图
代码链接:https : //github.com/eazyciphers/deep-learning-tutors
参考文献:
https://www.researchgate.net/profile/Andrew_Agbemenu/publication/325223548_An_Automatic_Number_Plate_Recognition_System_using_OpenCV_and_Tesseract_OCR_Engine/links/5c87e7ea299bf14e7e781750/An-Automatic-Number-Plate-Recognition-System-using-OpenCV-and-Tesseract-OCR-Engine.pdf
https://en.wikipedia.org/wiki/Tesseract_(software)
交流群