【小沐学NLP】Python实现图片文字识别_机器学习如何图片中文字识别的程序-程序员宅基地

技术标签: python  nlp  图片识别  AI  自然语言处理  文字识别  Python  

NLP开发系列相关文章编写如下:
1 【小沐学NLP】Python实现词云图
2 【小沐学NLP】Python实现图片文字识别
3 【小沐学NLP】Python实现中文、英文分词
4 【小沐学NLP】Python实现聊天机器人(ELIZA))
5 【小沐学NLP】Python实现聊天机器人(ALICE)
6 【小沐学NLP】Python实现聊天机器人(微软Azure)
7 【小沐学NLP】Python实现聊天机器人(微软小冰)
8 【小沐学NLP】Python实现聊天机器人(钉钉机器人)
9 【小沐学NLP】Python实现聊天机器人(微信机器人)
10 【小沐学NLP】Python实现聊天机器人(Selenium、七嘴八舌)
11 【小沐学NLP】Python实现聊天机器人(ChatterBot,代码示例)
12 【小沐学NLP】Python实现聊天机器人(ChatterBot,集成前端页面)
13 【小沐学NLP】Python实现聊天机器人(ChatterBot,集成web服务)

OCR 的前身是光学字符识别,它对当今的数字世界具有革命性意义。OCR 实际上是一个完整的过程,在此过程中,数字世界中存在的图像/文档被处理,文本被处理成普通的可编辑文本。

1、Tesseract

Tesseract最初由惠普实验室支持,用于电子版文字识别,1996年被移植到Windows上,1998年进行了C++化,在2005年Tesseract由惠普公司宣布开源。2006年到现在,由Google公司维护开发。
最初Tesseract是用C语言写的,在1998年改用C++。

1.1 下载安装

https://digi.bib.uni-mannheim.de/tesseract/
https://tesseract-ocr.github.io/tessdoc/Data-Files

下载Tesseract的安装程序如下:
在这里插入图片描述
安装Tesseract后,文件夹如下:
在这里插入图片描述
下载中英文语言包:
https://github.com/tesseract-ocr/tessdata
在这里插入图片描述

1.2 命令行

  • (1)安装测试
tesseract -v

在这里插入图片描述

  • (2)识别图片中文字
    tesseract imagename outputbase [-l lang] [–psm pagesegmode] [configfile…]
    解释:tesseract 图片名 输出文件名 -l 字库文件 -psm pagesegmode 配置文件
tesseract d:\20190219162542304.png result

在这里插入图片描述

  • 测试的图片d:\20190219162542304.png:
    在这里插入图片描述
  • 测试的结果文件如下:
    在这里插入图片描述
    使用中文语言包再次进行识别:
tesseract d:\20190219162542304.png result -l chi_sim

在这里插入图片描述

  • 测试的结果文件如下:
    在这里插入图片描述

此外还有一个参数psm:比如tesseract test.jpg result -l eng --psm 7 nobatch
psm 参数说明

0 = Orientation and script detection (OSD) only.
1 = Automatic page segmentation with OSD.
2 = Automatic page segmentation, but no OSD, or OCR
3 = Fully automatic page segmentation, but no OSD. (Default)
4 = Assume a single column of text of variable sizes.
5 = Assume a single uniform block of vertically aligned text.
6 = Assume a single uniform block of text.
7 = Treat the image as a single text line.
8 = Treat the image as a single word.
9 = Treat the image as a single word in a circle.
10 = Treat the image as a single character.

1.3 python接口

  • 安装库:
pip install pytesseract
pip install pillow
  • 测试代码:
import pytesseract
from PIL import Image
# 读取图片
im = Image.open('sentence.jpg')
# 识别文字
string = pytesseract.image_to_string(im)
print(string)
import pytesseract
from PIL import Image
# 读取图片
im = Image.open('sentence.png')
# 识别文字,并指定语言
string = pytesseract.image_to_string(im, lang='chi_sim')
print(string)
import os
import pytesseract
# 文字图片的路径
path = 'text_img/'
# 获取图片路径列表
imgs = [path + i for i in os.listdir(path)]
# 打开文件
f = open('text.txt', 'w+', encoding='utf-8')
# 将各个图片的路径写入text.txt文件当中
for img in imgs:
    f.write(img + '\n')
# 关闭文件
f.close()
# 文字识别
string = pytesseract.image_to_string('text.txt', lang='chi_sim')
print(string)

2、EasyOCR

2.1 简介

EasyOCR 实际上是一个 Python 包,它将 PyTorch 作为后端处理程序。

EasyOCR 像任何其他 OCR(Google 的 tesseract 或任何其他)一样检测图像中的文本,但我在使用它时,我发现它是从图像中检测文本的最直接的方法,而且它将 PyTorch 作为后端处理程序,准确性更可靠。

EasyOCR 支持 42 多种语言进行检测。EasyOCR 是由 Jaided AI 公司创建的。

2.2 安装

Ready-to-use OCR with 80+ supported languages and all popular writing scripts including: Latin, Chinese, Arabic, Devanagari, Cyrillic, etc.
https://pypi.org/project/easyocr/

pip install easyocr

在线测试如下:
https://www.jaided.ai/easyocr/

  • 测试图片如下:
    在这里插入图片描述
  • 识别结果如下:
    在这里插入图片描述
    在这里插入图片描述

2.3 测试代码

import os
import easyocr
import cv2
from matplotlib import pyplot as plt
import numpy as np

IMAGE_PATH = 'test.jpg'
reader = easyocr.Reader(['en'])
result = reader.readtext(IMAGE_PATH,paragraph="False")
print(result)
import os
import easyocr
import cv2

reader = easyocr.Reader(['ch_sim'])
result = reader.readtext(r'd:\test_chs.png', detail = 0, paragraph=True)
print(result)

3、PaddleOCR

https://github.com/PaddlePaddle/PaddleOCR

支持多语言识别,目前能够支持 80 多种语言;
除了能对中文、英语、数字识别之外,还能应对字体倾斜、文本中含有小数点字符等复杂情况
提供有丰富的 OCR 领域相关工具供我们使用,方便我们制作自己的数据集、用于训练。

PaddleOCR 需在 PaddlePaddle2.0 下才可以正常运行,开始之前请确保 PaddlePaddle2.0 已经安装。

python3 -m pip install paddlepaddle==2.0.0 -i https://mirror.baidu.com/pypi/simple
git clone https://github.com/PaddlePaddle/PaddleOCR
cd PaddleOCR
pip3 install -r requirements.txt
  • 使用 gpu,识别单张图片
python3 tools/infer/predict_system.py --image_dir="./doc/imgs/11.jpg" --det_model_dir="./inference/ch_ppocr_mobile_v2.0_det_infer/"  --rec_model_dir="./inference/ch_ppocr_mobile_v2.0_rec_infer/" --cls_model_dir="./inference/ch_ppocr_mobile_v2.0_cls_infer/" --use_angle_cls=True --use_space_char=True
  • 使用 gpu ,识别多张图片
python3 tools/infer/predict_system.py --image_dir="./doc/imgs/" --det_model_dir="./inference/ch_ppocr_mobile_v2.0_det_infer/"  --rec_model_dir="./inference/ch_ppocr_mobile_v2.0_rec_infer/" --cls_model_dir="./inference/ch_ppocr_mobile_v2.0_cls_infer/" --use_angle_cls=True --use_space_char=True
  • 不使用gpu,识别单张图片
python3 tools/infer/predict_system.py --image_dir="./doc/imgs/11.jpg" --det_model_dir="./inference/ch_ppocr_mobile_v2.0_det_infer/"  --rec_model_dir="./inference/ch_ppocr_mobile_v2.0_rec_infer/" --cls_model_dir="./inference/ch_ppocr_mobile_v2.0_cls_infer/" --use_angle_cls=True --use_space_char=True --use_gpu=False


结语

如果您觉得该方法或代码有一点点用处,可以给作者点个赞,或打赏杯咖啡;╮( ̄▽ ̄)╭
如果您感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果您需要相关功能的代码定制化开发,可以留言私信作者;(✿◡‿◡)
感谢各位大佬童鞋们的支持!( ´ ▽´ )ノ ( ´ ▽´)っ!!!
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hhy321/article/details/125122480

智能推荐

【愚公系列】2023年10月 WPF控件专题 Popup控件详解_wpf popup-程序员宅基地

文章浏览阅读7.8k次,点赞4次,收藏6次。WPF控件是Windows Presentation Foundation(WPF)中的基本用户界面元素。它们是可视化对象,可以用来创建各种用户界面。WPF控件可以分为两类:原生控件和自定义控件。原生控件是由Microsoft提供的内置控件,如Button、TextBox、Label、ComboBox等。这些控件都是WPF中常见的标准用户界面元素。自定义控件则允许开发人员使用XAML和C#等编程语言来创建个性化的用户界面元素。自定义控件可以根据需求提供更多的功能和自定义化选项,以及更好的用户体验。_wpf popup

VM二次开发VM.PlatformSDKCS.VmException:“应用程序中的错误。”-程序员宅基地

文章浏览阅读72次。这是因为VM开发框架与你的目标框架不同导致,点击属性将目标框架切换到对应即可,如果不行就都试一遍,我这里是4.7.1,VM4.3,谢谢支持与点赞。

Elastic Job 同城主备、同城双活,高可用必备_es集群 双活方案-程序员宅基地

文章浏览阅读776次。在使用Elastic Job Lite做定时任务的时候,我发现很多开发的团队都是直接部署单点,这对于一些离线的非核心业务(如对账、监控等)或许无关紧要,但对于一些高可用补偿、核心数据定时修改(如金融场景的利息更新等),单点部署则“非常危险”。实际上,Elastic Job Lite是支持高可用的。网上关于Elastic Job的较高级的博文甚少,本文试图结合自身实践的一些经验,大致讲解其方案原理,并延伸至同城双机房的架构实践。单点部署到高可用如本文开头所说,很多系统的部署是采取以下部署架构:_es集群 双活方案

SAP ABAP 反查BOM, 找出它的上阶_abap bom反查至最上层-程序员宅基地

文章浏览阅读2.5k次。更多内容关注公众号:SAP Technical各位可以关注我的公众号:SAP Technical查询物料的上阶方法有三:1. CS15 可直接查出物料的上阶直至顶阶物料.2. CALL FUNCTION. 只能查上上阶, 要想得到顶阶, 需要递归查询.CS_WHERE_USED_MAT Bills of material; where-used li..._abap bom反查至最上层

JS(JavaScript)详解-程序员宅基地

文章浏览阅读7k次,点赞7次,收藏37次。JavaScript是由Netscape(网景)公司研发出来的一种在它的Navigator浏览器上执行的程序语言。JavaScript是一种基于对象(object-based)和事件驱动(Event Driven)的简单的并具有安全性能的脚本语言。JavaScript组成ECMAScript:JavaScript的核心,语法格式,使用方法文档对象模型(DOM,document object model):DOM(文档对象模型)是 HTML 和 XML 的应用程序接口(API)。_js

最好用的caffe深度学习简单批处理数据集(windows+linux+Python)_win linux 深度学习 数据集-程序员宅基地

文章浏览阅读395次。简单的批处理方式,包含了windows系统下的bat文件,Linux系统下的sh文件以及最牛逼的Python脚本。在进行AI相关的研究时,不可避免的需要去进行处理数据集。有些数据集是现成的,有些数据集却是需要自己去定制的。以下是自己在学习的过程中总结出来的比较常见的几种方式去处理数据。因为做的是CV,所以设计的处理方式多是处理图片。一、windows下的bat1、统计每个文件夹的名称以及相应文..._win linux 深度学习 数据集

随便推点

Oracle19c安装及监听配置&PLSQL Developer安装-程序员宅基地

文章浏览阅读233次。首先,在“开始”菜单栏中找到Oracle-OraDB19Home1(因安装版本不同可能会有差异),接着打开Net Configuration Assistant,进行监听程序的配置;使用dos命令(windows徽标+R--输入cmd)/菜单栏搜索框直接输入cmd,输入lsnrctl status;监听程序配置完成后再通过cmd输入lsnrctl status命令,测试如下则说明监听程序已配置完成;Oracle主目录用户口令即在下载Oracle时自定义的口令密码;若如下图显示则是尚未开启监听程序;

Java中8种常见的数据结构_java数据结构-程序员宅基地

文章浏览阅读152次。数组、链表、堆、栈、队列、树、哈希、图。_java数据结构

C11新特性-程序员宅基地

文章浏览阅读1.1k次。C++11常用特性总结1、关键字及新语法C++11相比C++98增加了许多关键字及新的语法特性,很多人觉得这些语法可有可无,没有新特性也可以用传统C++去实现。也许吧,但个人对待新技术总是抱着渴望而热衷的态度对待,也许正如很多人所想,用传统语法也可以实现,但新技术可以让你的设计更完美。这就如同在原来的维度里,你要完成一件事情,需要很多个复杂的步骤,但在新语法特性里,你可以从另外的维度,很干脆,直接就把原来很复杂的问题用很简单的方法解决了,我想着就是新的技术带来的一些编程体验上非常好的感觉。大家也不要觉_c11新特性

hive导入导出数据自动化的shell脚本_shell一个脚本同时导入导出数据-程序员宅基地

文章浏览阅读3.2k次。1.从mysql导入到hive的ods层的shell脚本传参表示要导入的数据分期日期,sqoop导入,实例:#!/bin/bashexport SQOOP_HOME=/usr/bin/sqoopif [ $# == 1 ] then dateStr=$1 else dateStr=`date -d '-1 day' +'%Y-%m-%d'`fidateNowStr=`date +'%Y-%m-%d'`yearStr=`date -d ${dateStr}_shell一个脚本同时导入导出数据

python 报错 被呼叫方拒绝接收呼叫_在对excel的操作中报错,被呼叫方拒绝接收呼叫...-程序员宅基地

文章浏览阅读1.1k次。-王大海 2009-03-12 06:25(二) 使用Delphi 控件方法在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。1) 打开Excel :ExcelApplication1.Connect;2) 显示当前窗口:ExcelApplication1.Visible[0]:=True;3) 更改 ..._python win32 被呼叫方拒绝接收呼叫

matlab区间非等长分隔,离散数据自适应区间划分优化问题-程序员宅基地

文章浏览阅读689次。原有260个样本点,我分为Num_QuJian=10 段,如果RMS太大,则再分为20段,主要是这个意思。clc;clear allformat longglobal Num_QuJian %%% 大于等于2 整个区间划分为n段Num_QuJian=10global QuJian fmaxQuJian=260;global V_O m RMSV_O=[];%%%%生成约束 AX<=..._matlab 划分区间

推荐文章

热门文章

相关标签