我正在使用这个ocr算法http://sourceforge.net/projects/javaocr/来检测图像中的数字.我尝试过使用tesseract,但我有完全相同的问题,有时它不起作用.这从来没有奏效过(java ocr).当我使用java ocr时,它没有产生任何输出但是/ n.
图像是完全白色的,数字是黑色的.图像中唯一的工件是靠近顶部和底部边框的两条线,甚至不会与字符相互影响.对齐是正常的,就像打印文本一样,它不是手写或倾斜.
BufferedImage image2 = ImageIO.read(new File("moneyImage"+".bmp"));
ImageManipulator.show(image2, 5);
OCRScanner scanner = new OCRScanner();
String items = scanner.scan(image2, 0, 0, 0, 0, null);
System.out.println(items);
Run Code Online (Sandbox Code Playgroud)
图像2清晰显示,此示例取自发布它的其他人.我没有做任何复杂的事情,这对我来说没有意义,为什么这不起作用.这是一个简单的灰度图像.
当我尝试运行独立程序(java ocr one)时,它可以工作并生成正确的数字作为输出.我不知道如何从我的java项目中提取字符以及为什么它不起作用.
我的测试图片是: 
还有,这个
String lastText = null;
Tesseract instance = Tesseract.getInstance();
try {
lastText = instance.doOCR(imageFile);
} catch (TesseractException ex) {
Logger.getLogger(ActionAbstraction.class.getName()).log(Level.SEVERE, null, ex);
}
Run Code Online (Sandbox Code Playgroud)
即使我给出了从java ocr输出的单个数字的图片,也绝对不产生输出.它们似乎工作但是当我进行实际扫描时它们都不输出任何东西.
此外,我正在使用tiff图像,正如我之前所说,字符提取工作正常.什么是行不通的是java代码调用图像上的扫描.我已经链接了相应的库(或者它会产生编译器错误)
不确定:但是您不是告诉扫描仪只用以下行查看图像的左上角:
String items = scanner.scan(image2, 0, 0, 0, 0, null);
Run Code Online (Sandbox Code Playgroud)
也许将其更改为(类似):
String items = scanner.scan(image2, 0, 0, 80, 20, null);
Run Code Online (Sandbox Code Playgroud)
[将 80,20 更改为图像的宽度/高度 - 您可能可以让 Java 为您执行此操作 - 如果我没记错的话,我认为 Image 类中有一个方法]。
我通过对源代码进行 git 克隆得到了这个(可能是错误的)想法:
git clone git://git.code.sf.net/p/javaocr/source javaocr-source
并且在“javaocr-source\core\src\main\java”目录中: 'java.net.sourceforge.javaocr.ImageScanner.java' 中包含的接口定义了 'scan' 接口,如下所示:
//
void scan(
Image image,
DocumentScannerListener listener,
int left,
int top,
int right,
int bottom);
}
Run Code Online (Sandbox Code Playgroud)
//
| 归档时间: |
|
| 查看次数: |
930 次 |
| 最近记录: |