我正在开展一个项目,该项目需要拍摄文本(来自任何文本的硬拷贝)并将该文本转换为文本文件。然后我想使用该文本文件来做一些不同的事情,例如提供新闻文章的超链接或允许用户编辑文档。
到目前为止,我尝试过的工具是 sourceforge.net 的 Java OCR,它在包中提供的图像上运行良好。但是当我拍摄自己的文字时,它根本不起作用。我应该实施一些培训过程吗?如果是这样,有人知道如何实施吗?任何帮助都会大有帮助。谢谢!
我有一个 java 应用程序,我最终决定使用Tesseract OCR,然后使用Runtime.exec()
. 也许不是您需要的答案,但以防万一您没有考虑过。
在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();
}