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

道高一尺 道高一尺     2022-09-16     199

关键词:

#非黑即白--谷歌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(光学字符识别)

】用于屏幕文本的OCR(光学字符识别)【英文标题】:OCR(OpticalCharacterRecognition)foron-screentext【发布时间】:2010-10-2803:05:50【问题描述】:我正在尝试创建一个软件,通过捕获屏幕截图来自动化PC,然后OCR(光学字符识别)它会寻... 查看详情

ocr研究学习总结1

...霍夫线变换HoughLinesP)、灰度处理、二值化处理(非黑即白)、膨胀操作(混成一团&#x 查看详情

ocr(opticalcharacterrecognition,光学字符识别)

OCR(OpticalCharacterRecognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程;即,针对印刷体字符,采用光... 查看详情

移动端车牌识别,ocr光学字符识别技术

移动端车牌识别技术,是在OCR光学字符识别技术的基础上研发的用来识别汽车号牌特征信息的图像识别技术。在国内,该项技术由北京易泊时代携手清华大学成功地将"国家863计划"项目成果——"文字图像识别技术TH-OCR"产业化,... 查看详情

在 OCR(光学字符识别)之前,您会推荐啥软件用于图像增强? [关闭]

】在OCR(光学字符识别)之前,您会推荐啥软件用于图像增强?[关闭]【英文标题】:WhatsoftwarewouldyourecommendforimageenhancementpriortoOCR(OpticalCharacterRecognition)?[closed]在OCR(光学字符识别)之前,您会推荐什么软件用于图像增强?[关闭... 查看详情

光学字符识别技术

...一下——OCR识别,OCR(OpticalCharacterRecognition),中文名叫光学字符识别。如今的它应该在技术领域上那是小有名气了,毕竟它可是实用型技术的代表,技术融入生活最快最好的方式那就是利用与商业化。如何通过识别软件将图像... 查看详情

Android OCR(光学字符识别)[重复]

】AndroidOCR(光学字符识别)[重复]【英文标题】:AndroidOCR(OpticalCharacterRecognization)[duplicate]【发布时间】:2011-10-3008:25:27【问题描述】:我想开发一个从图像中读取文本的应用程序。我应该使用哪个库?【问题讨论】:开始使用co... 查看详情

python,opencv中的光学字符识别(ocropticalcharacterrecognition)

Python,OpenCV中的光学字符识别(OCROpticalCharacterRecognition1.什么是OCR?2.光学字符识别简史3.光学字符识别的应用4.OSD方向和脚本检测5.前处理和后处理的重要性6.OCR工具和API参考这篇博客将介绍什么是光学字符识别OCR࿰... 查看详情

如何识别作为光学字符识别 (OCR) 输出的文本中的实体?

】如何识别作为光学字符识别(OCR)输出的文本中的实体?【英文标题】:Howtorecognizeentitiesintextthatistheoutputofopticalcharacterrecognition(OCR)?【发布时间】:2019-07-2420:51:28【问题描述】:我正在尝试使用文本数据进行多类分类。我面临的... 查看详情

ocr识别要依赖于深度学习的进展吗?

这些年深度学习的出现,让光学字符识别(OCR)技术焕发第二春。现在光学字符识别(OCR)基本都用卷积神经网络来做了,而且识别率也是惊人的好,人们也不再需要花大量时间去设计字符特征了。在光学字符识别(OCR)系统中... 查看详情

是否有任何 Watson 或 Bluemix API 能够与 OCR(光学字符识别)一起使用? [关闭]

】是否有任何Watson或BluemixAPI能够与OCR(光学字符识别)一起使用?[关闭]【英文标题】:IsthereanyWatsonorBluemixAPItobeabletoworkwithOCR(OpticalCharacterRecognition)?[closed]【发布时间】:2017-03-1718:13:30【问题描述】:是否有任何Watson或BluemixAPI... 查看详情

光学字符识别。使用tesseract识别里程表

】光学字符识别。使用tesseract识别里程表【英文标题】:OCR.Usingtesseracttorecognizeodometer【发布时间】:2016-08-0903:21:56【问题描述】:我想识别里程表中的数字。我找到了适用于iOS的本教程。https://www.raywenderlich.com/93276/implementing-tess... 查看详情

andrewng-ml-第十九章-应用举例:照片ocr(光学字符识别)

1.问题描述与OCRpipeline 图1.图像文字识别流水线 首先是输入图片-》进行文字检测-》字符分割-》字符识别。 这些阶段分别需要1-5人这样子。 2.滑动窗口主要讲滑动窗口分类器。图2.滑动窗口检测 对于行人检测... 查看详情

ocr技术系列之一字符识别技术总览

...什么是OCR?OCR英文全称是OpticalCharacterRecognition,中文叫做光学字符识别。它是利用光学技术和计算机技术把印在或写在纸上的文字读取出来,并转换成一种计算机能够接受、人又可以理解的格式。文字识 查看详情

灰度思维,黑白决策

...明白:现实中的人不是非善即恶的,现实中的事物也不是非黑即白的,如果我们单纯用“好”和“坏”、“对”和“错”去判断一个人和一件事,结果一定会有失偏颇。灰度思维,是指在分析问题的时候,先不急于做非黑即白的... 查看详情

光学字符识别多行检测

】光学字符识别多行检测【英文标题】:OpticalCharacterRecognitionMultipleLineDetection【发布时间】:2019-05-2412:40:50【问题描述】:我正在构建OCR。为此,我使用CNN、RNN和CTC损失函数。我的输入层获取图像,输出层预测该图像上写入的内... 查看详情

光学字符识别中的表示是啥?

】光学字符识别中的表示是啥?【英文标题】:Whatisrepresentationinopticalcharacterrecognition?光学字符识别中的表示是什么?【发布时间】:2017-11-0720:48:05【问题描述】:我正在学习OCR并正在阅读这本书https://www.amazon.com/Character-Recognitio... 查看详情

最新科比耐克广告词【英文】

....AndhatethatI'mloved,fortheexactsamereasons.人们对我好恶分明,非黑即白。厌恶我上场,我摆架子。厌恶我的技术,我的野心。厌恶我是个老鸟,万夫莫敌。随你的便,再加把劲恨我也无妨。反正我正因为同样的原因被拥戴。Lovemeorhate... 查看详情