字符识别:
字符识别程序有助于准确的从文本中识别出每个文本元素。
通过应用深度学习算法,可以准确的识别图像中字符或文本元素的并对其进行分类。这些字符一般有很大区别。
当我们使用普通技术来识别字符时,可能会在特定点上出现一些错误。如果我们使用基于深度学习的OpenCV算法将给出有效的输出。
对于运行模型的必须安装由Google作为光学字符识别引擎开发的tesseract。
pip install pytesseract
OpenCV:
OpenCV是一种一项基本技术,我们主要利用他来消除的噪声以便进一步执行数据操作。
Open CV是深度学习技术领域中使用最广泛的算法。
它极大地依赖于受过训练的数据,并有助于识别图像中存在的文本。开放式简历使算法丢失的准确性变成一幅图画。灰度等级在字符识别领域提供了有效的分类。因此,我们特此导入所有必要的软件包,以使我们的模型可以正常使用。
为了在您的本地计算机上安装OpenCV,请使用以下命令...
pip install opencv-python
图像可以直接读取到代码中吗?
• 让我们讨论影响识别字符的因素:
• 图像中的噪声会导致许多错误识别字符的因素。为了确保无噪音,我们在代码中消除了识别。
• 当图像不是高分辨率时,识别将失败。因此,为了获得准确的结果,最好拍摄高分辨率的图像。
• 有时图像的角度也会出现缺陷。
• 在假定文本时,图像的反射会导致错误。如此多的字母“ F”被识别为“ P”。
• 如果代码无法训练字体,字体也会改变结果。
• 各种图像具有本领域的各种表示风格,因此,当存在更多肤色或多种颜色时,会对图像中的识别文本做出不正确的假设。
考虑到以上所有因素,必须在所有测试用例通过的地方相应地构建代码。
使用OpenCV识别字符的Python代码:
导入所有软件包:#import all the packagesimport cv2import numpy as npimport pytesseractfrom PIL import Image使用软件包安装后,将其导入代码。声明或初始化路径:tesseract是一种开源工具,可以从网上下载。下载后,请提及其路径,如下所示。
# path of pytesseract execution folder pytesseract.pytesseract.tesseract_cmd = 'C:\Program Files\Tesseract-OCR\tesseract.exe'# Path of imagemain_path = r'qu12.png'主要方法:在这部分代码中,我们正在实现• 读取图像• 灰度图像• 进行膨胀和腐蚀以消除图像中不需要的噪声。• 去除噪点后写图像。• 应用阈值以获取唯一的黑白图片。• 写入相同的图像以进行进一步的识别过程。• 使用Tesseract进行字符识别。
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)