Github每日精选(第56期):支持多语言的文字识别EasyOCR

EasyOCR

EasyOCR一款好用的OCR,支持80多种语言和所有流行的书写脚本,包括拉丁语、汉语、阿拉伯语、德瓦纳加里语、西里尔语等。

OCROptical Character Recognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程。

一般OCR的过程如下:

  • 识别出文字区域
  • 对文字区域矩形分割,拆分成不同的字符
  • 字符分类
  • 识别出文字

一般来说,如果在用上概率公式的话,那准确率会更高点。

EasyOCR 使用的是机器学习的方式,使用的机器学习库为torch

Github每日精选(第56期):支持多语言的文字识别EasyOCR_第1张图片
来看看怎么使用,EasyOCR 使用起来确实比较简单。

安装

通过包安装,最新稳定版本:

pip install easyocr

安装最新的开发版本:

pip install git+https://github.com/JaidedAI/EasyOCR.git

注意,这里是在ubuntu下安装,windows的版本,安装起来会比较费劲,这里就不做介绍。

Github每日精选(第56期):支持多语言的文字识别EasyOCR_第2张图片

安装完成以后,还需要下载,相关的模型 数据:

Github每日精选(第56期):支持多语言的文字识别EasyOCR_第3张图片
关于使用,我们可以到网站上来试用一下,

假设我们要识别的文字如下:

Github每日精选(第56期):支持多语言的文字识别EasyOCR_第4张图片
识别结果如下:

Github每日精选(第56期):支持多语言的文字识别EasyOCR_第5张图片
我们也可以自己编写程序,来识别文字,也就是几句话的事情:

import easyocr
reader = easyocr.Reader(['ch_sim','en']) # this needs to run only once to load the model into memory
result = reader.readtext('chinese.jpg')
print(result )

得出如下的结果:

[([[5, 5], [229, 5], [229, 25], [5, 25]], '[总投7.9亿元!东部垃圾焚浇发电[', 0.08669103035451338), ([[237, 5], [386, 5], [386, 25], [237, 25]], '(三期)  项目敢得新迸展', 0.08111882257673593), ([[395, 5], [536, 5], [536, 25], [395, 25]], '土建己基本完成]  - ', 0.08647737115445017), ([[0, 29], [71, 29], [71, 49], [0, 49]], '门9报消意', 0.10136334145616752), ([[81, 29], [115, 29], [115, 49], [81, 49]], '近3', 0.9139336481750041), ([[123, 29], [339, 29], [339, 49], [123, 49]], '作为市政集匦重要民生保障设施之-', 0.12565472718039977), ([[347, 29], [519, 29], [519, 49], [347, 49]], '的东部生活垃圾焚烧发宅厂', 0.099161272827686), ([[0, 53], [149, 53], [149, 73], [0, 73]], '期)项目土建己基本完成', 0.0729209855661902), ([[157, 53], [345, 53], [345, 73], [157, 73]], '施工己全面转入设备安装阶段_', 0.13883050145003392), ([[0, 101], [377, 101], [377, 121], [0, 121]], '东部垃圾焚烧发宅厂(三期)项目位于厦门东部巨云飞生态园内', 0.011565073474962767), ([[385, 101], [489, 101], [489, 121], [385, 121]], '是省市重点工程', 0.3230764058066195)]

通过结果的分析可以发现,EasyOCR 还给了我们格外的信息,就是位置信息了。

通过下面的程序,把文字的区域画出来。

Github每日精选(第56期):支持多语言的文字识别EasyOCR_第6张图片
代码如下:

#!/usr/bin/env python
# encoding: utf-8

import easyocr
import cv2
reader = easyocr.Reader(['ch_sim','en'])
img = cv2.imread('4f70c06988d732947b62c18501a876a8.jpeg' )
result = reader.readtext(img)

color=(0,0,0)
for res in result:
    print(res[1])
    for p in [(0,1),(1,2),(2,3),(3,0)]:
        #print(res[0][p[0]])
        #print(res[0][p[1]])
        cv2.line(img,res[0][p[0]],res[0][p[1]],(0,0,255),1)

cv2.imwrite('4f70c06988d732947b62c18501a876a8-1.jpeg',img)

结果如下:

我们如此
热爱杭州
A new look of Hangzhou

Github每日精选(第56期):支持多语言的文字识别EasyOCR_第7张图片

你可能感兴趣的:(Github每日精选,ubuntu,linux,运维,文字识别)