我正在寻找Java中OCR(光学字符识别)的示例代码或API名称,使用它我可以从图像文件中提取所有文本.不将它与我在代码下面使用的任何图像进行比较.
public class OCRTest {
static String STR = "";
public static void main(String[] args) {
OCR l = new OCR(0.70f);
l.loadFontsDirectory(OCRTest.class, new File("fonts"));
l.loadFont(OCRTest.class, new File("fonts", "font_1"));
ImageBinaryGrey i = new ImageBinaryGrey(Capture.load(OCRTest.class, "full.png"));
STR = l.recognize(i, 1285, 654, 1343, 677, "font_1");
System.out.println(STR);
}
}
Run Code Online (Sandbox Code Playgroud)
nav*_*872 10
您可以尝试使用Tesseract的Tess4j或JavaCPP预设.我后来认为它比前者更容易.将依赖项添加到您的pom`
<dependency>
<groupId>org.bytedeco.javacpp-presets</groupId>
<artifactId>tesseract-platform</artifactId>
<version>3.04.01-1.3</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
`它的编码简单
import org.bytedeco.javacpp.*;
import static org.bytedeco.javacpp.lept.*;
import static org.bytedeco.javacpp.tesseract.*;
public class BasicExample {
public static void main(String[] args) {
BytePointer outText;
TessBaseAPI api = new TessBaseAPI();
// Initialize tesseract-ocr with English, without specifying tessdata path
if (api.Init(null, "eng") != 0) {
System.err.println("Could not initialize tesseract.");
System.exit(1);
}
// Open input image with leptonica library
PIX image = pixRead(args.length > 0 ? args[0] : "/usr/src/tesseract/testing/phototest.tif");
api.SetImage(image);
// Get OCR result
outText = api.GetUTF8Text();
System.out.println("OCR output:\n" + outText.getString());
// Destroy used object and release memory
api.End();
outText.deallocate();
pixDestroy(image);
}
}
Run Code Online (Sandbox Code Playgroud)
Tess4j有点复杂,因为它需要安装特定的VC++可再发行组件包.
你可以在sourceforge上试试javaocr:http://javaocr.sourceforge.net/
使用Encog的applet也有一个很好的例子:http://www.heatonresearch.com/articles/42/page1.html
也就是说,OCR需要很多功能,所以这意味着如果你正在寻找大量使用,你应该照看用C编写的OCR库并将其与Java集成.
OCR很难.因此,在冒险进入之前一定要确定您的需求.
Tesseract和opencv(例如使用javacv进行集成)是常见的选择.还有商业解决方案,如ABBYY FineReader Engine和ABBYY Cloud OCR SDK.
| 归档时间: |
|
| 查看次数: |
74053 次 |
| 最近记录: |