java文字识别程序的关键是寻找一个可以调用的OCR引擎。tesseract-ocr就是一个这样的OCR引擎,在1985年到1995年由HP实验室开发,现在在Google。tesseract-ocr 3.0发布,支持中文。不过tesseract-ocr 3.0不是图形化界面的客户端,别人写的FreeOCR图形化客户端还不支持导入新的 3.0 traineddata。但这标志着,现在有自由的中文OCR软件了。
为隆阳等地区用户提供了全套网页设计制作服务,及隆阳网站建设行业解决方案。主营业务为网站制作、做网站、隆阳网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
java中使用tesseract-ocr3.01的步骤如下:
1.下载安装tesseract-ocr-setup-3.01-1.exe(3.0以上版本才增加了中文识别)
2.在安装向导中可以选择需要下载的语言包。
3.到网上搜索下载java图形处理所需的2个包:jai_imageio-1.1-alpha.jar,swingx-1.6.1.jar
4.java程序清单:
文字识别私有化部署方案
可部署至「本地服务器」的文字识别服务,支持主流 CPU/GPU 环境及国产化系统部署,通用场景、卡证、票据、iOCR 等各类 OCR 模型及自定义平台均可提供容器化部署包,在专有网络环境下一键部署应用,保障数据私密性。同时,可提供通用型一体机或国产化一体机,软硬一体交付,开箱即用,统一维保
快捷部署
容器化打包,支持本地物理机、私有云等多种部署方式,提供一键部署工具和常用运维工具,快速接入、高效运维
数据安全
专有网络环境下本地化部署,数据无需公网上传,实现业务网络公私分离,保障企业核心生产数据的私密性要求
适配广泛
CPU 及 GPU 环境均可部署,主流 GPU 显卡类型均已适配,并可支持国产化系统部署
授权灵活
根据QPS和使用期限进行授权,可自由选择不同QPS配置,灵活适应不同场景、不同业务的并发量需求
成为开发者
三步完成账号的基本注册与认证:
STEP1:点击百度AI开放平台导航右侧的控制台,选择需要使用的AI服务项。若为未登录状态,将跳转至登录界面,请您使用百度账号登录。如还未持有百度账户,可以点击此处注册百度账户。
STEP2:首次使用,登录后将会进入开发者认证页面,请填写相关信息完成开发者认证。注:(如您之前已经是百度云用户或百度开发者中心用户,此步可略过)。
STEP3:通过控制台左侧导航,选择产品服务-人工智能,进入具体AI服务项的控制面板(如文字识别、人脸识别),进行相关业务操作。
希望能帮到你,谢谢!
云脉OCR SDK开发者平台上有提供名片识别API接口,支持Java、C++、C、object pascal及objective-C等多种语言,识别速度快,平均识别时间少于0.6秒,识别率高,字符识别率97.37%,用户登录后即可自主下载接口.....
按照说明,送入tesseract的图片的质量直接影响识别的效果,因此,简单的预处理是不可或缺的
1.首先灰度化,灰度值=0.3R+0.59G+0.11B:
Java代码
for (int y = minY; y height; y++) {
for (int x = minX; x width; x++) {
int rgb = srcImg.getRGB(x, y);
Color color = new Color(rgb); // 根据rgb的int值分别取得r,g,b颜色。
int gray = (int) (0.3 * color.getRed() + 0.59
* color.getGreen() + 0.11 * color.getBlue());
Color newColor = new Color(gray, gray, gray);
srcImg.setRGB(x, y, newColor.getRGB());
}
}
结果如图:
2.其次是灰度反转:
Java代码
for (int y = minY; y height; y++) {
for (int x = minX; x width; x++) {
int rgb = buffImg.getRGB(x, y);
Color color = new Color(rgb); // 根据rgb的int值分别取得r,g,b颜色。
Color newColor = new Color(255 - color.getRed(), 255 - color
.getGreen(), 255 - color.getBlue());
buffImg.setRGB(x, y, newColor.getRGB());
}
}
结果如图:
3.再次是二值化,取图片的平均灰度作为阈值,低于该值的全都为0,高于该值的全都为255:
Java代码
for (int y = minY; y height; y++) {
for (int x = minX; x width; x++) {
int rgb = buffImg.getRGB(x, y);
Color color = new Color(rgb); // 根据rgb的int值分别取得r,g,b颜色。
int value = 255 - color.getBlue();
if (value average) {
Color newColor = new Color(0, 0, 0);
buffImg.setRGB(x, y, newColor.getRGB());
} else {
Color newColor = new Color(255, 255, 255);
buffImg.setRGB(x, y, newColor.getRGB());
}
}
}
结果如图:
看看效果还凑合,就省却尺寸调整、中值滤波以及噪点去除等步骤了。
以上完成图片预处理工作;Tesseract没有开放api,纯命令行调用:
Java代码
ListString cmd = new ArrayListString(); // 存放命令行参数的数组
cmd.add(tessPath + "\\tesseract");
cmd.add("");
cmd.add(outputFile.getName()); // 输出文件位置
cmd.add(LANG_OPTION); // 字符类别
cmd.add("eng"); // 英文,找到tessdata里对应的字典文件。
ProcessBuilder pb = new ProcessBuilder();
pb.directory(imageFile.getParentFile());
cmd.set(1, tempImage.getName()); // 把图片文件位置放在第一个位置
pb.command(cmd); // 执行命令行
pb.redirectErrorStream(true); // 通知进程生成器是否合并标准错误和标准输出,把进程错误保存起来。
Process process = pb.start(); // 开始执行进程
int w = process.waitFor(); // 当前进程停止,直到process停止执行,返回执行结果.
结果输出表示一切正常
当然,真正要用好tesseract-ocr,还需用到其强大地训练工具,就是后话了……
jdbc连接
package com.luopo;
import java.sql.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Testoracle2 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
//1.加载驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.得到连接
Connection ct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger");
//
Statement sm=ct.createStatement();
ResultSet rs=sm.executeQuery("select * from emp");
while(rs.next()){
//
System.out.println("用户名:"+rs.getString(2));
}
} catch(Exception e){
e.printStackTrace();
}
}
}
是OCR文字识别技术来识别身份证吧。OCR识别身份证的话,会涉及到数字识别,中文识别,英文识别的。数字和英文相对比较好识别。中文麻烦一些。目前市场上有一个开源的,tesseract识别效果稍微比较好。楼主可以试一试。tesseract是C++做的,java可以使用JNI调用C语言的。如果楼主不差钱,并且识别效果要求高的话,建议使用第三方的识别软件。楼主可以和取得联系。希望帮助到楼主,希望采纳,谢谢!