海安零距离 海安论坛 海安新闻 海安

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3018|回复: 0

Python识别验证码,基于Tesseract实现图片文字识别

[复制链接]

6234

主题

6234

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
18718
发表于 2019-12-27 17:54 | 显示全部楼层 |阅读模式
一.简介

Tesseract是一个开源的文本识别【OCR】引擎,可通过Apache 2.0许可获得。它可以直接利用,或者利用API从图像中提取打印的文本,支持多种语言。该软件包包罗一个ORC引擎【libtesseract】和一个下令行步调【tesseract】。Tesseract4添加了一个新的基于LSTM的OCR引擎,该引擎专注于行识别,但仍支持Tesseract 3的传统Tesseract OCR引擎,该引擎通过识别字符模式举行工作。通过利用传统OCR引擎模式【--oem 0】,可以与Tesseract 3兼容。它还须要练习好的数据文件对旧引擎举行支持,比方tessdata目录下的数据文件。
[img=auto,auto]http://www.dlct.net/https://upload-images.jianshu.io/upload_images/20592807-39c89505b890a673?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240[/img]

特点:
1.具有Unicode【UTF-8】支持,而且可以“开箱即用”地识别100多种语言。
2.支持各种输特殊式,纯文本,hOCR【HTML】,PDF,仅不可见文本的PDF,TSV。Master分支还对ALTO【XML】输出提供实验性支持。
3.在许多情况下,要想获得更好的OCR结果,须要进步提供给Tesseract的图像的质量。
二.在python情况中安装pytesseract


安装乐成!
三.在Windows体系下安装Tesseract


设置情况变量:

备注:最新的为4.1.0,发起安装4.x版本,根据一可知,版本4有庞大升级,体系性能明显提拔,特殊是在对中文的识别上更是显着!
四.python代码实现
  1. 1 # -*- coding: utf-8 -*- 2 """ 3 Spyder Editor 4  5 This is a temporary script file. 6 """ 7  8 import  pytesseract 9 from PIL import Image10 11 #打开验证码图片12 image = Image.open('E:\\testData\\tess\\1.png')13 #加载一下图片防止报错,此处可以省略14 #image.load()15 #调用show来展示图片,调试用此处可以省略16 #image.show()17 text = pytesseract.image_to_string(image,lang='chi_sim')18 print(text)
复制代码
五.Python情况实行结果【无数据洗濯】
  1. 20a志口吴吊5达吊园康 阮 随 阮 随 随 阮 隆 随 阮 阮 庞应 阮 院 阮 阮 际 阮 阮 院 院 阮 庞宇BBBBBBBBBBE 胡胡胡胡胡胡胡胡胡胡脱 医剧 澈 剖 剖 亨 亨 定 亨 宣 河  宇BBBBEEEEEE振产 莲主主主主主主主主主主生 交EEEEEEEEEEE35653职职职职职职职职职职EEEEEEEEEEE093View Code
复制代码
部分示例:

可知对中文的识别一塌糊涂,因此发起照旧利用版本4举行识别!

六.利用Java步调调用ImageIO举行数据预处置惩罚

[code]  1 package zhen;  2 import java.awt.Color;  3 import java.awt.image.BufferedImage;  4 import java.io.File;  5 import java.io.FileInputStream;  6 import java.io.IOException;  7   8 import javax.imageio.ImageIO;  9   10   11 public class LineMark{ 12     public static void clean(String fromPath,String toPath) throws IOException{ 13         File file1 = new File(fromPath); 14         BufferedImage image = ImageIO.read(file1); 15          16         BufferedImage sourceImg =ImageIO.read(new FileInputStream(file1));  // 获取图片的长宽 17         int width = sourceImg.getWidth(); 18         int height = sourceImg.getHeight(); 19          20         /** 21          * 创建3维数组用于生存图片rgb数据 22          */ 23         int[][][] array = new int[width][height][3]; 24         for(int i=0;i 16;  28                 int green = (pixel & 0xff00) >> 8; 29                 int blue = (pixel & 0xff);  //通过坐标(i,j)的像素值获得r,g,b的值    30                 array[j][0] = red; 31                 array[j][1] = green; 32                 array[j][2] = blue; 33             } 34         } 35          36         /** 37          * 打扫表格线: 38          * 竖线:绝大多数点的x值都为255 39          */ 40         for(int i=0;i

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|深圳论坛-深圳人的网上家园  

GMT+8, 2020-10-2 00:36 , Processed in 0.160615 second(s), 30 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表