我正在开发一个项目,该项目需要拍摄文本(来自任何文本的硬拷贝)并将该文本转换为文本文件。然后我想使用该文本文件来做一些不同的事情,例如提供新闻文章的超链接或允许用户编辑文档。
到目前为止我尝试过的工具是来自sourceforge.net的Java OCR,它对包中提供的图像运行良好。但当我拍摄自己的文字时,它根本不起作用。我应该实施一些培训流程吗?如果是这样,有人知道如何实施吗?任何帮助都会有很大帮助。谢谢你!
我有一个 java 应用程序,我最终决定使用超立方 OCR http://code.google.com/p/tesseract-ocr/,然后使用调用它Runtime.exec()
。也许不完全是您需要的答案,但以防万一您没有考虑过。
编辑+添加代码以响应评论回复
- 在 Windows 安装中,我认为我能够使用安装程序,或解压缩现成的二进制文件。
-
在Linux服务器上,我需要自己编译Tesseract,但如果你习惯了这种事情(gcc)的话,这并不太难;唯一的问题是依赖于莱普托尼卡 http://www.leptonica.com/这也需要编译。
// 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();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)