码迷,mamicode.com
首页 > 其他好文 > 详细

非黑即白--谷歌OCR光学字符识别

时间:2017-08-26 19:39:43      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:--   add   工程师   ace   智能   思路   图片   技术   在线   

#非黑即白--谷歌OCR光学字符识别

颜色的世界里,非黑即白。computer表示深信不疑。
今天研究一下前沿技术OCR光学识别庞大领域中的众多分支里的一个开源项目的一个包-tesseract。

能让机器识别图片是无数工程师梦寐以求的事
任何物体只有成功转为二进制才有可能被机器识别,而识别是做出一系列智能行为的前提

下面以一张验证码为例梳理一下机器识别的思路:

准备工作:
1、取到图片地址,在线转化为图片流或者下载到本地
2、PIL, pytesseract 两个包,其实主要用他们中各一个函数,前者是用Image将图片做像素级处理,以便后者用image_to_string将图片转化为字符串
3、图像基础知识:RGB所代表的红绿蓝色域均为0-255,三色叠加0代表黑色,255代表白色,区间值即为灰度

流程:
1、读取图片转为Image函数的对象
2、转化为灰度图(即黑白图片),进行二值化(强化黑白)
3、坐标系去除噪点,继续强化黑白
4、转化为字符串(涉及到分割、识别,image_to_string自动做了)


# coding=utf-8
from PIL import Image
from pytesseract import image_to_string

#  接收图片地址,和int类型的灰度值作为阀值,返回黑白图
def parse(img_address, g):
    img = Image.open(img_address)
    # 转化为灰度图
    imgL = img.convert(L)
    # imgL.show()
    img_load = imgL.load()
    print(imgL.size)
    # 遍历宽与高中的每一个像素并依据阈值判断,进行二值化
    for y in range(imgL.size[1]):
        for x in range(imgL.size[0]):
            # 阈值就是寻找灰度的平衡点
            # 小于阈值的数就是向黑色靠拢,直接赋值为黑,大于阈值即向255靠拢,直接赋值为白
            if img_load[x, y] <= g:
                img_load[x, y] = 0
            else:
                img_load[x, y] = 255
    return imgL

# 擦除噪点,对L模式下的图处理
# x,y 像素点坐标
# g 阈值(0-255之间的灰度值)
# n 强度(周围有几个符合阈值的像素点才留下)
def wipe_spot(img, x, y, g, n):
    count = 0
    if img[x - 1, y + 1] == g:
        count += 1
    if img[x, y + 1] == g:
        count += 1
    if img[x + 1, y + 1] == g:
        count += 1
    if img[x - 1, y] == g:
        count += 1
    if img[x + 1, y] == g:
        count += 1
    if img[x + 1, y - 1] == g:
        count += 1
    if img[x, y - 1] == g:
        count += 1
    if img[x + 1, y - 1] == g:
        count += 1
    if count < n:
        img[x, y] = 255


# 示例
imgl = parse("D://77.jpg", 150)
imgload = imgl.load()
for y in xrange(imgl.size[1]):
    for x in xrange(imgl.size[0]):
        if imgload[x, y] == 0:
            wipe_spot(imgload, x, y, 0, 1)
imgl.show()
print image_to_string(imgl).replace( , ‘‘)

 

非黑即白--谷歌OCR光学字符识别

标签:--   add   工程师   ace   智能   思路   图片   技术   在线   

原文地址:http://www.cnblogs.com/themost/p/7436071.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!