Java OCR 图像智能字符识别技术,可识别中文

几天一直在研究OCR技术,据我了解的情况,国内最专业的OCR软件只有2家,清华TH-OCR和汉王OCR,看了很多的OCR技术发现好多对英文与数字的支持都很好,可惜很多都不支持中文字符。Asprise-OCR,Tesseract 3.0以前的版本,都不支持中文,其实我用了下Asprise-OCR算是速度比较的快了,可惜他鄙视中文,这个没有办法,正好这段时间知名的开源OCR引擎Tesseract 3.0版本发布了,他给我们带来的好消息就是支持中文,相关的下载项目网站是:http://code.google.com/p/tesseract-ocr

虽然速度不是很客观可是毕竟人家开始支持中文也算是不错的,一个英文的语言包大概是1.8M,中文简体的语言包是39.5M,中文繁体的语言包是53M,这样就知道为什么识别中文慢的原因了

太多人留邮箱了,我一个人发布过来,请大家需要源码的,去资源控件下载,这是一个完整的项目

http://download.csdn.net/detail/zhoushuyan/4050580


package com.ocr;
import java.awt.Graphics2D;
import java.awt.color.ColorSpace;
import java.awt.geom.AffineTransform;
import java.awt.image.AffineTransformOp;
import java.awt.image.BufferedImage;
import java.awt.image.ColorConvertOp;
import java.awt.image.ColorModel;
import java.awt.image.MemoryImageSource;
import java.awt.image.PixelGrabber;
/**
*
* 图像过滤,增强OCR识别成功率
*
*/
public class ImageFilter {
    private BufferedImage image;
    private int iw, ih;
    private int[] pixels;
    public ImageFilter(BufferedImage image) {
       this.image = image;
       iw = image.getWidth();
       ih = image.getHeight();
       pixels = new int[iw * ih];
    }
    /** 图像二值化 */
    public BufferedImage changeGrey() {
    PixelGrabber pg = new PixelGrabber(image.getSource(), 0, 0, iw, ih, pixels, 0, iw);
       try {
           pg.grabPixels();
       } catch (InterruptedException e) {
           e.printStackTrace();
       }
       // 设定二值化的域值,默认值为100
       int grey = 100;
       // 对图像进行二值化处理,Alpha值保持不变
       ColorModel cm = ColorModel.getRGBdefault();


       for (int i = 0; i < iw * ih; i++) {


           int red, green, blue;


           int alpha = cm.getAlpha(pixels[i]);


           if (cm.getRed(pixels[i]) > grey) {


              red = 255;


           } else {


              red = 0;


           }
if (cm.getGreen(pixels[i]) > grey) {

              green = 255;

           } else {

              green = 0;
           }


           if (cm.getBlue(pixels[i]) > grey) {


              blue = 255;


           } else {


              blue = 0;


           }
           pixels[i] = alpha << 24 | red << 16 | green << 8 | blue;


       }
       // 将数组中的象素产生一个图像
       return ImageIOHelper.imageProducerToBufferedImage(new MemoryImageSource(iw, ih, pixels, 0, iw));

    }
    /** 提升清晰度,进行锐化 */
    public BufferedImage sharp() {
       PixelGrabber pg = new PixelGrabber(image.getSource(), 0, 0, iw, ih, pixels, 0, iw);
       try {
           pg.grabPixels();
       } catch (InterruptedException e) {
           e.printStackTrace();
       }
       // 象素的中间变量
       int tempPixels[] = new int[iw * ih];
       for (int i = 0; i < iw * ih; i++) {
           tempPixels[i] = pixels[i];
       }
       // 对图像进行尖锐化处理,Alpha值保持不变
       ColorModel cm = ColorModel.getRGBdefault();
       for (int i = 1; i < ih - 1; i++) {


           for (int j = 1; j < iw - 1; j++) {


              int alpha = cm.getAlpha(pixels[i * iw + j]);





              // 对图像进行尖锐化
              int red6 = cm.getRed(pixels[i * iw + j + 1]);
              int red5 = cm.getRed(pixels[i * iw + j]);
              int red8 = cm.getRed(pixels[(i + 1) * iw + j]);
              int sharpRed = Math.abs(red6 - red5) + Math.abs(red8 - red5);
              int green5 = cm.getGreen(pixels[i * iw + j]);
              int green6 = cm.getGreen(pixels[i * iw + j + 1]);
              int green8 = cm.getGreen(pixels[(i + 1) * iw + j]);
              int sharpGreen = Math.abs(green6 - green5) + Math.abs(green8 - green5);
              int blue5 = cm.getBlue(pixels[i * iw + j]);
              int blue6 = cm.getBlue(pixels[i * iw + j + 1]);
              int blue8 = cm.getBlue(pixels[(i + 1) * iw + j]);
              int sharpBlue = Math.abs(blue6 - blue5) + Math.abs(blue8 - blue5);
         if (sharpRed > 255) {
                  sharpRed = 255;
              }
              if (sharpGreen > 255) {
                  sharpGreen = 255;
               }
              if (sharpBlue > 255) {
                  sharpBlue = 255;
              }
              tempPixels[i * iw + j] = alpha << 24 | sharpRed << 16 | sharpGreen << 8 | sharpBlue;
           }
       }
       // 将数组中的象素产生一个图像


       return ImageIOHelper.imageProducerToBufferedImage(new MemoryImageSource(iw, ih, tempPixels, 0, iw));
    }

    /** 中值滤波 */
    public BufferedImage median() {
       PixelGrabber pg = new PixelGrabber(image.getSource(), 0, 0, iw, ih, pixels, 0, iw);
       try {
           pg.grabPixels();
       } catch (InterruptedException e) {
           e.printStackTrace();
       }
       // 对图像进行中值滤波,Alpha值保持不变
       ColorModel cm = ColorModel.getRGBdefault();
       for (int i = 1; i < ih - 1; i++) {
           for (int j = 1; j < iw - 1; j++) {
              int red, green, blue;
              int alpha = cm.getAlpha(pixels[i * iw + j]);
   // int red2 = cm.getRed(pixels[(i - 1) * iw + j]);
              int red4 = cm.getRed(pixels[i * iw + j - 1]);
              int red5 = cm.getRed(pixels[i * iw + j]);
              int red6 = cm.getRed(pixels[i * iw + j + 1]);
              // int red8 = cm.getRed(pixels[(i + 1) * iw + j]);
  // 水平方向进行中值滤波
              if (red4 >= red5) {
                  if (red5 >= red6) {
                     red = red5;
                  } else {
                     if (red4 >= red6) {
                         red = red6;
                     } else {
                         red = red4;
                     }
                  }
              } else {
                 if (red4 > red6) {
                     red = red4;
                  } else {
                      if (red5 > red6) {
                         red = red6;
                     } else {
                         red = red5;
                     }
                  }
              }
              // int green2 = cm.getGreen(pixels[(i - 1) * iw + j]);
              int green4 = cm.getGreen(pixels[i * iw + j - 1]);
              int green5 = cm.getGreen(pixels[i * iw + j]);
              int green6 = cm.getGreen(pixels[i * iw + j + 1]);
              // int green8 = cm.getGreen(pixels[(i + 1) * iw + j]);
           // 水平方向进行中值滤波
              if (green4 >= green5) {
                  if (green5 >= green6) {
                     green = green5;


                  } else {


                     if (green4 >= green6) {


                         green = green6;


                     } else {


                         green = green4;


                     }


                  }


              } else {


                  if (green4 > green6) {


                      green = green4;


                  } else {


                     if (green5 > green6) {


                         green = green6;


                     } else {


                         green = green5;


                     }


                  }


              }
       // int blue2 = cm.getBlue(pixels[(i - 1) * iw + j]);


              int blue4 = cm.getBlue(pixels[i * iw + j - 1]);


              int blue5 = cm.getBlue(pixels[i * iw + j]);


              int blue6 = cm.getBlue(pixels[i * iw + j + 1]);


              // int blue8 = cm.getBlue(pixels[(i + 1) * iw + j]);
            // 水平方向进行中值滤波


              if (blue4 >= blue5) {


                  if (blue5 >= blue6) {


                     blue = blue5;


                  } else {


                     if (blue4 >= blue6) {


                         blue = blue6;


                     } else {


                         blue = blue4;


                     }


                  }


              } else {


                  if (blue4 > blue6) {


                     blue = blue4;


                  } else {


                     if (blue5 > blue6) {


                         blue = blue6;


                     } else {


                         blue = blue5;


                     }


                  }


              }


              pixels[i * iw + j] = alpha << 24 | red << 16 | green << 8 | blue;


           }


       }





       // 将数组中的象素产生一个图像


       return ImageIOHelper.imageProducerToBufferedImage(new MemoryImageSource(iw, ih, pixels, 0, iw));


    }
    /** 线性灰度变换 */


    public BufferedImage lineGrey() {


       PixelGrabber pg = new PixelGrabber(image.getSource(), 0, 0, iw, ih, pixels, 0, iw);


       try {


           pg.grabPixels();


       } catch (InterruptedException e) {


           e.printStackTrace();


       }


       // 对图像进行进行线性拉伸,Alpha值保持不变


       ColorModel cm = ColorModel.getRGBdefault();


       for (int i = 0; i < iw * ih; i++) {


           int alpha = cm.getAlpha(pixels[i]);


           int red = cm.getRed(pixels[i]);


           int green = cm.getGreen(pixels[i]);


           int blue = cm.getBlue(pixels[i]);





           // 增加了图像的亮度


           red = (int) (1.1 * red + 30);


           green = (int) (1.1 * green + 30);


           blue = (int) (1.1 * blue + 30);


           if (red >= 255) {


              red = 255;


           }


           if (green >= 255) {


              green = 255;

           }

           if (blue >= 255) {


              blue = 255;

           }


           pixels[i] = alpha << 24 | red << 16 | green << 8 | blue;


       }

       // 将数组中的象素产生一个图像


       return ImageIOHelper.imageProducerToBufferedImage(new MemoryImageSource(iw, ih, pixels, 0, iw));


    }
    /** 转换为黑白灰度图 */


    public BufferedImage grayFilter() {


       ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);


       ColorConvertOp op = new ColorConvertOp(cs, null);


       return op.filter(image, null);


    }





    /** 平滑缩放 */


    public BufferedImage scaling(double s) {


       AffineTransform tx = new AffineTransform();


       tx.scale(s, s);


       AffineTransformOp op = new AffineTransformOp(tx, AffineTransformOp.TYPE_BILINEAR);


       return op.filter(image, null);


    }





    public BufferedImage scale(Float s) {


       int srcW = image.getWidth();


       int srcH = image.getHeight();


       int newW = Math.round(srcW * s);


       int newH = Math.round(srcH * s);


       // 先做水平方向上的伸缩变换


       BufferedImage tmp=new BufferedImage(newW, newH, image.getType());


       Graphics2D g= tmp.createGraphics();


       for (int x = 0; x < newW; x++) {


           g.setClip(x, 0, 1, srcH);


           // 按比例放缩


           g.drawImage(image, x - x * srcW / newW, 0, null);


       }





        // 再做垂直方向上的伸缩变换


       BufferedImage dst = new BufferedImage(newW, newH, image.getType());


       g = dst.createGraphics();


       for (int y = 0; y < newH; y++) {


           g.setClip(0, y, newW, 1);


           // 按比例放缩


           g.drawImage(tmp, 0, y - y * srcH / newH, null);


       }


       return dst;
    }

}



package com.ocr;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;

import java.awt.image.ImageProducer;

import java.awt.image.WritableRaster;

import java.io.File;

import java.io.IOException;

import java.util.Iterator;

import java.util.Locale;





import javax.imageio.IIOImage;


import javax.imageio.ImageIO;


import javax.imageio.ImageReader;


import javax.imageio.ImageWriteParam;


import javax.imageio.ImageWriter;


import javax.imageio.metadata.IIOMetadata;


import javax.imageio.stream.ImageInputStream;


import javax.imageio.stream.ImageOutputStream;


import javax.swing.JOptionPane;

import com.sun.media.imageio.plugins.tiff.TIFFImageWriteParam;
public class ImageIOHelper {


    public ImageIOHelper() {


    }

    public static File createImage(File imageFile, String imageFormat) {


       File tempFile = null;


       try {


           Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName(imageFormat);

           ImageReader reader = readers.next();

           ImageInputStream iis = ImageIO.createImageInputStream(imageFile);


           reader.setInput(iis);


           // Read the stream metadata


           IIOMetadata streamMetadata = reader.getStreamMetadata();

           // Set up the writeParam
           TIFFImageWriteParam tiffWriteParam = new TIFFImageWriteParam(Locale.US);
           tiffWriteParam.setCompressionMode(ImageWriteParam.MODE_DISABLED);

           // Get tif writer and set output to file


           Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("tiff");


           ImageWriter writer = writers.next();





           BufferedImage bi = reader.read(0);


           IIOImage image = new IIOImage(bi, null, reader.getImageMetadata(0));


           tempFile = tempImageFile(imageFile);


           ImageOutputStream ios = ImageIO.createImageOutputStream(tempFile);


           writer.setOutput(ios);

           writer.write(streamMetadata, image, tiffWriteParam);
           ios.close();
           writer.dispose();
           reader.dispose();
       } catch (Exception exc) {


           exc.printStackTrace();


       }


       return tempFile;


    }

    public static File createImage(BufferedImage bi) {


       File tempFile = null;


       try {
           tempFile = File.createTempFile("tempImageFile", ".tif");
           tempFile.deleteOnExit();
           TIFFImageWriteParam tiffWriteParam = new TIFFImageWriteParam(Locale.US);

           tiffWriteParam.setCompressionMode(ImageWriteParam.MODE_DISABLED);
           // Get tif writer and set output to file


           Iterator<ImageWriter> writers = ImageIO.getImageWritersByFormatName("tiff");


           ImageWriter writer = writers.next();

           IIOImage image = new IIOImage(bi, null, null);


           tempFile = tempImageFile(tempFile);


           ImageOutputStream ios = ImageIO.createImageOutputStream(tempFile);


           writer.setOutput(ios);


           writer.write(null, image, tiffWriteParam);


           ios.close();


           writer.dispose();


       } catch (Exception exc) {


           exc.printStackTrace();


       }


       return tempFile;


    }
    public static File tempImageFile(File imageFile) {


       String path = imageFile.getPath();


       StringBuffer strB = new StringBuffer(path);


       strB.insert(path.lastIndexOf('.'), 0);


       return new File(strB.toString().replaceFirst("(?<=//.)(//w+)$", "tif"));


    }
    public static BufferedImage getImage(File imageFile) {


       BufferedImage al = null;


       try {


           String imageFileName = imageFile.getName();


           String imageFormat = imageFileName.substring(imageFileName.lastIndexOf('.') + 1);


           Iterator<ImageReader> readers = ImageIO.getImageReadersByFormatName(imageFormat);


           ImageReader reader = readers.next();
           if (reader == null) {


              JOptionPane.showConfirmDialog(null,


                     "Need to install JAI Image I/O package./nhttps://jai-imageio.dev.java.net");


              return null;


           }
           ImageInputStream iis = ImageIO.createImageInputStream(imageFile);
           reader.setInput(iis);
           al = reader.read(0);
  reader.dispose();

       } catch (IOException ioe) {
           System.err.println(ioe.getMessage());
       } catch (Exception e) {
           System.err.println(e.getMessage());
       }
       return al;
    }
    public static BufferedImage imageToBufferedImage(Image image) {
       BufferedImage bufferedImage = new BufferedImage(image.getWidth(null), image.getHeight(null),
              BufferedImage.TYPE_INT_RGB);
       Graphics2D g = bufferedImage.createGraphics();
       g.drawImage(image, 0, 0, null);
       return bufferedImage;
    }
    public static BufferedImage imageProducerToBufferedImage(ImageProducer imageProducer) {
       return imageToBufferedImage(Toolkit.getDefaultToolkit().createImage(imageProducer));
    }
    public static byte[] image_byte_data(BufferedImage image) {
       WritableRaster raster = image.getRaster();
       DataBufferByte buffer = (DataBufferByte) raster.getDataBuffer();
       return buffer.getData();
    }
}

package com.ocr;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.jdesktop.swingx.util.OS;
public class OCR {


    private final String LANG_OPTION = "-l";


    private final String EOL = System.getProperty("line.separator");


    private String tessPath = new File("tesseract").getAbsolutePath();


    //private String tessPath="C://Program Files (x86)//Tesseract-OCR//";


    public String recognizeText(File imageFile, String imageFormat) throws Exception {


       File tempImage = ImageIOHelper.createImage(imageFile, imageFormat);


       File outputFile = new File(imageFile.getParentFile(), "output");


       StringBuffer strB = new StringBuffer();


       List<String> cmd = new ArrayList<String>();


       if (OS.isWindowsXP()) {


           cmd.add(tessPath + "//tesseract");


           //cmd.add(tessPath + "//Tesseract-OCR");


       } else if (OS.isLinux()) {


           cmd.add("tesseract");
       } else {
           //cmd.add(tessPath + "//Tesseract-OCR")

           cmd.add(tessPath + "//tesseract");
       }
           cmd.add(""); 
            cmd.add(outputFile.getName()); 
            cmd.add(LANG_OPTION); 
            cmd.add("chi_sim");
            cmd.add("eng"); 
       ProcessBuilder pb = new ProcessBuilder();
       pb.directory(imageFile.getParentFile());
       cmd.set(1, tempImage.getName());
       pb.command(cmd);
       pb.redirectErrorStream(true);
       Process process = pb.start();
       //tesseract.exe 1.jpg 1 -l chi_sim
       int w = process.waitFor();
       // delete temp working files
       tempImage.delete();
       if (w == 0) {
           BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(outputFile
                  .getAbsolutePath()
                  + ".txt"), "UTF-8"));
           String str;
           while ((str = in.readLine()) != null) {
              strB.append(str).append(EOL);
           }
           in.close();
       } else {
           String msg;
           switch (w) {
           case 1:
              msg = "Errors accessing files. There may be spaces in your image's filename.";
              break;
           case 29:
              msg = "Cannot recognize the image or its selected region.";
              break;
           case 31:
              msg = "Unsupported image format.";
              break;
           default:
              msg = "Errors occurred.";
           }
           tempImage.delete();
           throw new RuntimeException(msg);
       }
       new File(outputFile.getAbsolutePath() + ".txt").delete();
       return strB.toString();
    }


}
package com.ocr;
import java.io.File;
public class Test {
    /**
     * @param args
     */
    public static void main(String[] args) {
       // TODO Auto-generated method stub
       OCR ocr=new OCR();
        try {
           String maybe = new OCR().recognizeText(new  File("E://temp//222.jpg"), "jpg");
           System.out.println(maybe);
       } catch (Exception e) {
           // TODO Auto-generated catch block
           e.printStackTrace();
       }
    }
}

由于可以第三方包加起来有点大,告诉大家一个网站www.findjar.com去里面找你想要的包吧,需要相关包的留下邮件吧

java 目录结构如上图

效果图:

解析出来的效果

分享到:
查看评论
226楼 wwy545923461 2012-07-07 19:46发表 [回复] [引用] [举报]
楼主我也要啊 麻烦发给我一份灰常感谢!
225楼 allen521520 2012-07-04 16:45发表 [回复] [引用] [举报]
你好楼主,麻烦发我一份吧 谢谢 !邮箱:71218605@qq.com
224楼 Chen112147 2012-06-14 21:40发表 [回复] [引用] [举报]
280129727@qq.com   楼主发给一份给我吧
223楼 shuyuxinghun 2012-06-06 09:24发表 [回复] [引用] [举报]
楼主能发一份给偶么,非常感谢,邮箱:361908353@qq.com
222楼 red_iris 2012-06-03 23:21发表 [回复] [引用] [举报]
求楼主赐完整代码,qq:770683857
急用,救人一命胜造七级浮屠啊
221楼 lbx967 2012-05-31 09:35发表 [回复] [引用] [举报]
楼主 这个能用作名片识别么。
还有就是 路径是对的  但是总抛异常
Errors accessing files. There may be spaces in your image's filename.。 求指导。
220楼 faimry 2012-05-05 00:13发表 [回复] [引用] [举报]
faimry@hotmail.com 请给我一份吧,谢谢
219楼 whwzm88 2012-04-17 10:33发表 [回复] [引用] [举报]
感谢楼主的分享!
218楼 javayuan920 2012-04-16 17:06发表 [回复] [引用] [举报]
我自己下载到了,非常感谢楼主分享!!
217楼 javayuan920 2012-04-16 16:32发表 [回复] [引用] [举报]
楼主:麻烦你给我发一份呗。我继续研究啊!
308964086@qq.com。谢了!
216楼 xinhua125 2012-04-10 03:32发表 [回复] [引用] [举报]
发给我一份,314417668@qq.com,谢谢!
215楼 pxsh319_163com 2012-04-04 20:40发表 [回复] [引用] [举报]
麻烦楼主给我发一份好吗,邮箱地址644724721@qq.com,非常感谢您。
214楼 pxsh319_163com 2012-04-04 20:39发表 [回复] [引用] [举报]
麻烦楼主让给我发一份好吗?邮箱地址644724721@qq.com,谢谢您。
213楼 xiaozj886 2012-04-02 15:36发表 [回复] [引用] [举报]
终于找到错误了,原因是windows平台的tesseract.exe需要VC++2008运行库支持。需要下载安装:
http://www.xdowns.com/soft/softdown.asp?softid=39360
212楼 xiaozj886 2012-04-02 14:38发表 [回复] [引用] [举报]
麻烦您给我传一份,谢谢!546851596@qq.com
211楼 xiaozj886 2012-04-02 14:37发表 [回复] [引用] [举报]
怎么报这个错误了,地址我也改了,还是一样:
CreateProcess: E:\workspace\map\tesseract\tesseract 10.tif output -l chi_sim eng error=14001
210楼 linets 2012-03-28 18:27发表 [回复] [引用] [举报]
弱弱的问一句楼主 ImageIOHelper ImageFilter  这两个类存在的意义?从代码中前者是用到了 只是单纯的copy一下原图片吗? 但是后者针对与图片的增强功能 好像没有被引用..
209楼 grpsmm 2012-03-15 00:15发表 [回复] [引用] [举报]
csdn上下载的项目包貌似解压有问题,您可以传我一份么,谢谢!1402233655@qq.com
208楼 grpsmm 2012-03-15 00:13发表 [回复] [引用] [举报]
您好,这部分可以集成到android手机上实现么,谢谢!
207楼 lgzdlmu 2012-03-14 17:37发表 [回复] [引用] [举报]
您好,想问一下,可以同时对一个中英混文进行识别吗?要求同时识别文章中的中文和英文?
206楼 cqxulei 2012-03-13 15:41发表 [回复] [引用] [举报]
麻烦能给我发一份吗?邮箱地址:879245195@qq.com

谢谢
205楼 yaerfeng 2012-02-07 20:40发表 [回复] [引用] [举报]
回复zhoushuyan:li_zhuangs@163.com谢谢!!!
Re: zhoushuyan 2012-02-08 10:40发表 [回复] [引用] [举报]
回复yaerfeng:http://download.csdn.net/detail/zhoushuyan/4050580
204楼 Baswa_java 2012-02-06 12:39发表 [回复] [引用] [举报]
正在学习OCR,楼主发个完成DEMO给我可以吗?我得邮箱
Baswa_java@qq.com,非常感谢
Re: zhoushuyan 2012-02-07 18:55发表 [回复] [引用] [举报]
回复Baswa_java:已经发生,一直到174楼,请收到的转发一下吧
203楼 yangyawei2014 2012-02-01 17:01发表 [回复] [引用] [举报]
楼主,方便的话发份源代码给我吧,不胜感激!yjnso@sina.com
202楼 zhengjack 2012-01-31 05:30发表 [回复] [引用] [举报]
楼主 不知道您最近在不在线。如果在线请传给我一份代码吧:zhengjack1987@gmail.com
谢谢
我用中文的时候总有Thread 1: Program received signal: "EXC_BAD_ACCESS". 不知道为什么,请教一下您。
201楼 kangyuc 2012-01-19 17:10发表 [回复] [引用] [举报]
楼主求分享一份谢谢
kangyuc@126.com
200楼 yanliang1 2012-01-19 16:38发表 [回复] [引用] [举报]
楼主给我发一份吧,我想研究研究。谢谢啦。
yanliang.yl@hotmail.com 感激不尽
199楼 wangtiantian23 2012-01-17 16:13发表 [回复] [引用] [举报]
小妹请求楼主发一份完整的源代码。
QQ:195001405
邮箱:195001405@qq.com
198楼 nihao2984 2012-01-16 16:46发表 [回复] [引用] [举报]
楼主,能给我发一份吗117447174@qq.com
197楼 nihao2984 2012-01-16 16:45发表 [回复] [引用] [举报]
楼主,能给我发完整的项目吗?谢谢啦
196楼 bensidiyu 2012-01-14 09:36发表 [回复] [引用] [举报]
您好,可以发一份完整demo包含jar包的吗? 谢谢楼主了!
邮箱: cici10957915@qq.com
再次感谢!
195楼 yaerfeng 2012-01-12 00:31发表 [回复] [引用] [举报]
li_zhuang@foxmail.com研究!谢谢!!!
194楼 zhengweiaianqi 2012-01-11 18:09发表 [回复] [引用] [举报]
OCR 刚刚打错了,不好意思 。
193楼 zhengweiaianqi 2012-01-11 18:08发表 [回复] [引用] [举报]
您好,可以发一份ORC的完整demo吗? 谢谢楼主了。
  邮箱: 1150437877@qq.com
再次感谢了
192楼 checktime 2012-01-10 09:51发表 [回复] [引用] [举报]
LZ, 也发一份完整代码给我吧,谢谢
2009chenlog@gmail.com
191楼 yangliuy 2012-01-07 23:33发表 [回复] [引用] [举报]
楼主可以发我一份项目代码吗,想研究一下!非常感谢
yangliuyouxiang@163.com
190楼 yangliuy 2012-01-07 23:32发表 [回复] [引用] [举报]
楼主可以发我一份项目代码吗,想研究一下!非常感谢
189楼 xsy8129 2012-01-07 00:55发表 [回复] [引用] [举报]
谢谢楼主能不能发送完成的项目!!  xsy8129@126.com
188楼 jijijijijijijijijija 2012-01-06 18:30发表 [回复] [引用] [举报]
对了,邮箱是1552688123@qq.com
187楼 jijijijijijijijijija 2012-01-06 18:29发表 [回复] [引用] [举报]
楼主最近忙这个啊!!!发一个完整的过来吧,别人都发了啊,%>_<%
186楼 xiaolilei 2011-12-30 19:49发表 [回复] [引用] [举报]
呵呵,这个项目文件csdn上有,搜得到,我都下到咯
185楼 xiaolilei 2011-12-29 22:02发表 [回复] [引用] [举报]
楼主求发一份项目文件,小弟谢谢啦。xiaolilei@126.com
184楼 leon1208 2011-12-26 21:24发表 [回复] [引用] [举报]
大侠,给我发一份完整的项目吧,万分感谢
leeon@sogou.com
183楼 liangyz44 2011-12-25 22:24发表 [回复] [引用] [举报]
lyz@51yycn.com 非常感谢!!
182楼 gzhua34 2011-12-25 22:17发表 [回复] [引用] [举报]
大哥,给我一份呗,谢谢,gzhua34@126.com
181楼 bellzuo 2011-12-22 23:48发表 [回复] [引用] [举报]
16439901@qq.com,楼主给我发一份吧,谢啦。
180楼 mickeal001 2011-12-22 16:22发表 [回复] [引用] [举报]
楼主给我发一份吧,万分感谢。我的邮箱是wuyonggang0123@126.com.
179楼 yackl 2011-12-20 16:07发表 [回复] [引用] [举报]
不得不说
图像过滤,增强OCR识别成功率,这个类貌似没多大作用...两幅图片的测试效果都一样
Re: zhoushuyan 2012-02-07 18:56发表 [回复] [引用] [举报]
回复yackl:这个只是学习研究下,识别比较高的库都是要收钱的
别人不给用
178楼 hyper2000 2011-12-19 14:38发表 [回复] [引用] [举报]
希望楼主发一份完整项目

hyper2008@vip.qq.com

感谢楼主
177楼 s519886099 2011-12-13 18:19发表 [回复] [引用] [举报]
楼主,能发份完整的项目给我吗,感激不尽!zpeg@qq.com
176楼 sas303 2011-12-13 00:21发表 [回复] [引用] [举报]
楼主,发我一份,1036620774@qq.com,多谢啊,正在研究,急用
175楼 aliang_25 2011-12-12 16:34发表 [回复] [引用] [举报]
530420803@qq.com
求大神!
174楼 bobo03041265 2011-12-12 11:31发表 [回复] [引用] [举报]
qingbo9527@163.com
THX!
173楼 hzcashy 2011-12-07 19:42发表 [回复] [引用] [举报]
hzcashy@gmail.com  或者 QQ:552133125 跪求! 大神
172楼 Alloxa 2011-12-05 12:43发表 [回复] [引用] [举报]
引用“Alloxa”的评论:求源码,谢谢楼主!

286652458@163.com
171楼 Alloxa 2011-12-05 11:43发表 [回复] [引用] [举报]
求源码,谢谢楼主!
170楼 biaoge226387282 2011-12-04 14:02发表 [回复] [引用] [举报]
ttbzyzy@163.com 能不能给我份 jar包 多谢
169楼 ac123ac 2011-12-03 21:26发表 [回复] [引用] [举报]
能发我一份完整的开发包吗,我也正在研究中,想借鉴一下,497079109@qq.com,谁有了,发我一份,谢谢!
168楼 longhf 2011-12-01 15:26发表 [回复] [引用] [举报]
能给我发份吗?正急着用,谢谢!243312713@qq.com
167楼 ivanluoxy 2011-12-01 08:39发表 [回复] [引用] [举报]
发一份给我,急用!谢谢 邮箱:luoxiaoyang2010@126.com
166楼 zqfddqr 2011-11-28 10:28发表 [回复] [引用] [举报]
求楼主赐代码,谢谢 邮箱zqfddqr@163.com
165楼 xiong_studyIT 2011-11-24 10:29发表 [回复] [引用] [举报]
求楼主赐完整代码,谢谢 邮箱xiong_jx@foxmail.com
164楼 xiong_studyIT 2011-11-24 10:23发表 [回复] [引用] [举报]
解析出来的是乱码
163楼 fengrx 2011-11-23 21:06发表 [回复] [引用] [举报]
十分感谢, 给我发一份吧,谢谢!
32305994@qq.com
162楼 it_java_lx 2011-11-22 18:12发表 [回复] [引用] [举报]
发一份给我,急用!谢谢  邮箱:sendhuangyh@gmail.com
161楼 qw249025 2011-11-21 16:24发表 [回复] [引用] [举报]
请发一份给我,谢谢
邮箱:249025@qq.com
160楼 lxy7869251 2011-11-21 11:31发表 [回复] [引用] [举报]
亲,给我发一份好吗?谢谢!
我邮箱569326592@qq.com
159楼 lshguang89 2011-11-16 16:25发表 [回复] [引用] [举报]
请也发我一份 谢谢!ares89@126.com
另外 楼主何不把文件传到一个共享空间呢,方便大家下载啦
158楼 haodaoren 2011-11-16 14:10发表 [回复] [引用] [举报]
你好!能给我发一份完整的吗?1450582071@qq.com 非常感谢!
157楼 jacobby 2011-11-15 09:54发表 [回复] [引用] [举报]
跪求完整的项目,望LZ或已拿到代码包的童鞋能发一下,谢谢!
邮箱地址:jacob.yu@163.com
156楼 bingheshifu 2011-11-14 22:54发表 [回复] [引用] [举报]
老大,请发一份给我:980098333@qq.com,感激不尽~~~
155楼 book_iveniven 2011-11-10 17:55发表 [回复] [引用] [举报]
大侠,麻烦给俺发一份,iveniven@163.com 谢了先
154楼 danp1 2011-11-10 11:19发表 [回复] [引用] [举报]
现在在用这个技术希望能给我发一份,谢谢!我的邮箱 367038744@qq.com 或danshanpeng@163.com
153楼 gdw1876 2011-11-09 17:34发表 [回复] [引用] [举报]
大哥!!!最近项目急需使用,能否给我的邮件发一份可以测试通过的。gdw1876@126.com 小弟在此不胜感激。
152楼 p88263286 2011-11-09 11:00发表 [回复] [引用] [举报]
您好,我最近在做Java的汉字识别方面的工作,想参照一下你的研究成果,如果可以的话,把你的源代码发给我一份,谢谢!erenzone@gmail.com
151楼 leo20060401 2011-11-07 16:07发表 [回复] [引用] [举报]
楼主麻烦发一份给我吧
leo20060401@vip.qq.com
大恩不言谢,不胜感激!!
150楼 tmpuser 2011-11-06 17:39发表 [回复] [引用] [举报]
恳请楼主发送一份源码到tmpuser@163.com十分感谢。
149楼 wangbo7280 2011-11-03 16:09发表 [回复] [引用] [举报]
楼主给我发一份吧,我想研究研究。谢谢啦。
w_wangbo@126.com  感激不尽
Re: zhoushuyan 2011-11-03 17:07发表 [回复] [引用] [举报]
回复wangbo7280:已经发送完整的项目
148楼 liuyc1985 2011-10-31 16:01发表 [回复] [引用] [举报]
感激楼主的开源胸怀,同样求源码一份,非常感谢knowledge926@163.com
Re: zhoushuyan 2011-11-03 17:07发表 [回复] [引用] [举报]
回复liuyc1985:已经发送完整的项目
147楼 gdw1876 2011-10-31 10:53发表 [回复] [引用] [举报]
感谢大侠跟我们分享了这么好的学习资料!本人最近项目要用到此技术,恳请大侠发一份完整的源码给我,我的邮箱gdw1876@126.com,再次感谢楼主!
Re: zhoushuyan 2011-11-03 17:08发表 [回复] [引用] [举报]
回复gdw1876:已经发送完整的项目
146楼 zhuzhudeailnn 2011-10-29 09:32发表 [回复] [引用] [举报]
大侠,我也要一份哇,最近一直在找关于java在数字图像处理中的应用,一直都找不到合适的资料,好不容易找到 你这里,一定给我发一份哇~~~谢谢了,非常感谢哇406236443@qq.com
145楼 xzy520zj 2011-10-28 16:54发表 [回复] [引用] [举报]
你好!能给我发一份完整的吗?非常感谢!1789769885@qq.com
Re: zhoushuyan 2011-11-03 17:08发表 [回复] [引用] [举报]
回复xzy520zj:已经发送完整的项目
144楼 li545540328 2011-10-27 22:36发表 [回复] [引用] [举报]
感谢楼主跟我们分享了这么好的学习资料!本人也正在努力地研究之中,恳请楼主发一份完整的源码给我,我的邮箱545540328@qq.com,再次感谢楼主!
143楼 reakeng 2011-10-24 11:23发表 [回复] [引用] [举报]
麻烦哥哥们给我发一份demo和相关包,谢谢,我也正在调研这个,要用到这门技术 reakeng@163.com 365290522@qq.com这两个邮箱都行
142楼 dadalielie 2011-10-20 12:31发表 [回复] [引用] [举报]
楼主,能不能发给我一份完整的?我这几天在弄这个,想参考一下,谢谢楼主啦~~我的邮箱是352459117@qq.com
141楼 wuhongyu1985 2011-10-19 23:30发表 [回复] [引用] [举报]
麻烦楼主源码给我发一份吧,万分感谢!我的邮箱:1985why001@163.com
140楼 magic7777 2011-10-19 13:26发表 [回复] [引用] [举报]
我也想要一份,最近正在研究,不胜感激!magic7777@qq.com
139楼 free0006 2011-10-19 08:36发表 [回复] [引用] [举报]
能给我发一份完整的吗?javalyq@163.com 谢了
不胜感激。
138楼 mzdaichao 2011-10-13 20:01发表 [回复] [引用] [举报]
mzdaichao@163.com 请将demo与jar包、dll 发给我好吗?
137楼 yi_yuan 2011-10-05 10:37发表 [回复] [引用] [举报]
厉害
136楼 cvj1991 2011-10-04 17:55发表 [回复] [引用] [举报]
楼主,能发一份完整的源码给我吗?最近急用,感激不尽!531165916@qq.com谢谢!!
135楼 showhight03 2011-09-30 10:23发表 [回复] [引用] [举报]
拜膜楼主,希望能发我一份完成源码,yonas@sina.cn,不胜感激
134楼 BigBird2012 2011-09-28 13:27发表 [回复] [引用] [举报]
麻烦您把源码发给我一份,做个参考!谢谢!
Re: BigBird2012 2011-09-28 14:54发表 [回复] [引用] [举报]
回复BigBird2012:我邮箱290167875@qq.com
133楼 zhanghuajiecoo8 2011-09-15 17:26发表 [回复] [引用] [举报]
最近项目急需使用,能否给我的邮件发一份可以测试通过的。jiejing060922@126.com
132楼 kjadhfkjd 2011-09-15 00:10发表 [回复] [引用] [举报]
楼主可以发份完整的给我么?最近想搞这个,挺有趣的!邮箱:616044622@qq.com,非常感谢!
131楼 recobawhy123 2011-09-14 16:39发表 [回复] [引用] [举报]
里面的 ImageFilter 咋用啊, 告诉我一下
我邮箱  recobawhy@126.com
130楼 kill5561225 2011-09-13 15:06发表 [回复] [引用] [举报]
请楼主给我也发一份 405989455@qq.com
129楼 dongshilongdsl 2011-09-10 22:52发表 [回复] [引用] [举报]
楼主能发一份给偶么,非常感谢,邮箱:584561477@qq.com
128楼 a6607336 2011-09-08 17:28发表 [回复] [引用] [举报]
楼主能给我一份吗? 谢谢啊!!! 526876520@qq.com
127楼 lovejie8525 2011-09-02 10:10发表 [回复] [引用] [举报]
你好楼主,wsj-8525@163.com
麻烦发一下,谢谢。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值