咨询电话

使用Java从图像读取文本 置顶

发表于2017-03-11 10:10:23 次查看

这篇文章将有助于从您的图片中读取文本。它使用Tesseract库。 

 

您还可以使用下面的模块检查您的网站上的Captcha是否足够强大,并且不容易破解。

使用的语言

  • Java

Git位置

POM依赖

< dependency >  
    < groupId > net.sourceforge.tess4j </ groupId >  
    < artifactId > tess4j </ artifactId >  
    < version > 3.2.1 </ version >  
</ dependency >

 

先决条件

  1. 让我们假设你从c:\ myprogram运行这个程序。现在,您可以根据您的要求采用两种方法之一。

    节省空间的方法:只下载您需要的语言数据。这只需要30MB的英语数据集。

  2. 在c:\ myprogram \中创建一个名为tessdata的文件夹\

  3. 导航到https://github.com/tesseract-ocr/tessdata

  4. 下载eng.traineddata破解Captchas与英语(训练的数据也可用于其他语言)。

  5. 将eng.traineddata放在tessdata文件夹中。

  6. 最后,您的文件夹结构应如下所示:c:\ myprogram \ tessdata \ eng.traineddata节省

    时间的方法:从多种语言下载大于1GB的已训练数据包。

  7. 您也可以跳过步骤2到步骤5,只需从https://github.com/tesseract-ocr/tessdata下载tessdata-master文件夹

  8. 将tessdata-master.zip文件的内容解压缩到主项目文件夹中(例如,此处为c:\ myprogram \)

  9. 将tessdata-master重命名为tessdata

  10. 最后,你的文件夹结构应该看起来像c:\ myprogram \ tessdata \ <训练有几种语言的数据>。

程序

ImageCracker类,crackImage方法

public  static  String  crackImageString  filePath){  
    File  imageFile  =  new  FilefilePath);  
    ITesseract  instance  =  new  Tesseract();  
    尝试 {  
        String  result  =  instancedoOCRimageFile);  
        返回 结果 ;  
    } catchTesseractException  e){  
        系统错误的printlnË的getMessage());  
        返回 “读取图像时出错” ;  
    }}  
}}

 

怎么运行的

  1. 首先,crackImage获取需要读取的图像。

  2. 我们将文件对象指向该图像。

  3. 我们创建一个名为instance的Tesseract对象。

  4. 我们调用Tesseract库的预定义方法doOCR,传递来自步骤2的文件对象。

  5. doOCR方法返回从图像读取的文本,并返回相同的文本。

  6. 如果失败,它将输出错误消息并返回错误字符串。

驱动程序类,主要方法

public  static  void  mainString [] args){  
    // TODO自动生成方法存根  
    系统出来的printlnImageCrackercrackImage“testImage.PNG” ));  
}}

 

 

怎么运行的

  1. 我们称之为crackImage方法,传递要读取的图像。

  2. 我们在控制台上打印从方法读取的文本。

输入图像(testImage.PNG)

输出

使用Java创建Youtube元数据爬网程序。

 

完整计划

ImageCracker类

 comcooltrickshome ;
import  javaio文件 ;
进口 源炉tess4j* ;
public  class  ImageCracker {
    public  static  String  crackImageString  filePath){
        File  imageFile  =  new  FilefilePath);
        ITesseract  instance  =  new  Tesseract();
        尝试 {
            String  result  =  instancedoOCRimageFile);
            返回 结果 ;
        } catchTesseractException  e){
            系统错误的printlnË的getMessage());
            返回 “读取图像时出错” ;
        }}
    }}
}}

 

驱动程序类

 comcooltrickshome ;
public  class  Driver {
    / **  
     * @param args  
     * /
    public  static  void  mainString [] args){
        // TODO自动生成方法存根  
        系统出来的printlnImageCrackercrackImage“testImage.PNG” ));
    }}
}}


硅谷小编希望能帮助到你们!

\
在线客服
  • 点击这里给我发消息
  • 点击这里给我发消息
  • 微信扫一扫
  • 官方微信