是否有任何Java OCR工具将文本图像转换为可编辑的文本文件?

我正在开展一个项目,需要拍摄文本(从任何文本的硬拷贝),并将该文本转换为文本文件。 然后我想使用该文本文件做一些不同的事情,例如提供新闻文章的超链接或允许用户编辑文档。

到目前为止我尝试过的工具是sourceforge.net的Java OCR,它可以很好地处理包中提供的图像。 但是当我拍摄自己的文字时,它根本不起作用。 我应该实施一些培训流程吗? 如果是这样,有人知道如何实施它吗? 任何帮助都会有很长的路要走。 谢谢!

我有一个java应用程序,我最终决定使用Tesseract OCR ,并使用Runtime.exec()调用它。 也许不是你需要的答案,但万一你不考虑它。


添加编辑+代码以响应评论回复

  • 在Windows安装上,我认为我可以使用安装程序,或者解压缩现成的二进制文件。
  • 在Linux服务器上,我需要自己编译Tesseract,但是如果你已经习惯了这种事情(gcc),那就不难了。 唯一的问题是,对Leptonica的依赖还需要编译。

     // Tesseract can only handle .tif format, so we have to convert it ImageIO.write( ImageIO.read( new java.io.File(file.getPath())), "tif", tmpFile[0]); String[] tesseractCmd = new String[]{"tesseract", tmpFile[0].getAbsolutePath(), StringUtils.removeEnd(tmpFile[1].getAbsolutePath(), ".txt")}; final Process process = Runtime.getRuntime().exec(tesseractCmd); try { int exitValue = process.waitFor(); if(exitValue == 0) { final String extractedText = SearchableTextExtractionUtils.extractPlainText(new FileReader(tmpFile[1])); return extractedText; } throw new SearchableTextExtractionException(exitValue, Arrays.toString(tesseractCmd)); } catch (InterruptedException e) { throw new SearchableTextExtractionException(e); } finally { process.destroy(); }