一. 背景
今天有粉丝向波哥提出了这样一个疑问:给出一张图片,如何利用Java中的技术获取图片中的文字信息?针对这个问题,你有么有解决办法呢?如果你没有想到好的解决思路,也不用怕,看波哥来给你解决这个问题!
二. 解决思路
首先说到读取文件,我们耳熟能详的肯定就是使用I/O流进行文件的读取,但如果是要将图片里面的文字提取出来又该如何去做呢?
哈哈哈,肯定有同学犯难了,其实我们不妨换个思路。
首先我们想一想,文件的底层是不是就是一个二进制文件呢?当我们想要去获取其中的数据时,是不是会有一些二进制规范呢?我们将这种二进制规范解析出来,是否就能得到文字信息了呢?
三. 代码示例
带着这样的疑问,请大家跟波哥一起通过代码来实现一下吧,下面就是波哥给大家提供的实现代码。
public class Imageparse{
public static void main (String[] args){
//首先我们需要输入获取图片的路径信息,将其每个点位设置为二进制信息
Int[][] img = readPic(/*这里输入你的path绝对路径即可*/);
//将其转为一个一维数组
int[] bits = new int[img.length * img[0].lenght];
Int index = 0;
for(int i = 0; i < img.lenght;i++){//这段代码是查看解析的二维数组是否正确
for(int j = 0;j<img[i].length;j++){
bits[index++] = img[i][j];
}
}
//读取数组信息
parseUTF(bits);
}
public static int readPic(String path){
//这里我们就需要涉及到去拿去所有的数据 rgb 信息,有一个图片 IO 流
BufferedImage image = ImageIO.read(new FileInputStream(new File(path)));
//获取这个图片的宽和高
int width = image.getWidth();
int height = image.getHeight();
//创建一个当前图的最大宽高的二维数组
int[][] img = new int[height][width];
//到这里我们就该去把每个点位赋值
for(int i = 0;i<height;i++){
for(int j = 0;j<width;j++){
Int rgb = image.getRGB(j,i);//此时这是一个二进制颜色代码
//条件判断颜色转为 RGB ,例如(255,0,0)
int r = (rgb & 0x00ff0000) >>16 ;
int g = (rgb & 0x0000ff00) >>8 ;
int b = (rgb & 0x000000ff) ;
int a = 0xff /2;
if(r > a && g > a && b > a){
img[i][j] = 0;
}else{
img[i][j] = 1;
}
}
}
return img;
}
public static void parseUTF(int[] bits){
int index = 0;
int count = 0;
for(int j = 0;j<bits.lenght;){
if(bits[j]==1){
count++;
index++;
}else{
index++;
String str = "";
if(count == 0){
for(int k=1;k<=7;k++){
str += bits[index++];
}
}else {
for(int x = 0;x<8-(count+1);x++){
str+=bits[index++];
}
}else{
for(int y = 0;y<count-1;y++){
index+=2;
for(int z = 0;z<6;z++){
str+=bits[index++];
}
}
}
count = 0;
System.out.print((char)Integer.parseInt(str,2));
str="";
}
j=index;
}
}
}
接下来,来跟随波哥看看代码实际展现的最终效果吧:
四. 测试图片
下面这种图片,供大家用于测试上面的代码,你可以把波哥上面的代码运行起来,试试看能不能把下面图片中的文字识别出来。
文章来源:https://www.toymoban.com/news/detail-507081.html
如果你识别出来的结果是一首诗就对了哦。文章来源地址https://www.toymoban.com/news/detail-507081.html
到了这里,关于利用Java实现的图片中文字识别,你学会了吗?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!