使用OCR从Image文件中读取文本的API

我正在寻找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); } } 

您可以为Tesseract尝试Tess4j或JavaCPP预设 。 我后来认为它比前者更容易。 将依赖项添加到您的pom`

   org.bytedeco.javacpp-presets tesseract-platform 3.04.01-1.3  

`它的编码简单

 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); } } 

Tess4j有点复杂,因为它需要安装特定的VC ++可再发行组件包。

你可以在sourceforge上试试javaocr: http ://javaocr.sourceforge.net/

使用Encog的applet也有一个很好的例子: http : //www.heatonresearch.com/articles/42/page1.html

也就是说,OCR需要很多function,所以这意味着如果你正在寻找大量使用,你应该照看用C编写的OCR库并将其与Java集成。

OCR很难。 因此,在冒险进入之前一定要确定您的需求。

Tesseract和opencv(例如使用javacv进行集成)是常见的选择。 还有商业解决方案,如ABBYY FineReader Engine和ABBYY Cloud OCR SDK 。

Google提供OCR的开源OCR引擎。 它可以使用CMD进行处理。 您可以轻松地使用Java处理Web应用程序的CMD。
请访问https://www.youtube.com/watch?v=Mjg4yyuqr5E 。 您将获得使用CMD处理OCR的分步详细信息。