3

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

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

4

1 回答 1

0

我有一个 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();
    }
    
于 2012-10-31T13:31:50.543 回答