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

2023-12-20

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

到目前为止我尝试过的工具是来自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(使用前将#替换为@)

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

随机推荐

  • List 是指针吗?

    我注意到的行为List
  • 始终位于顶部窗口

    我正在寻找一种解决方案 以便使 JFrame 始终处于顶部 并且 始终 我真正的意思是 始终 setAlwaysOnTop true 当我以全屏模式启动游戏时 这将不起作用 我知道您通常不希望窗口保持在顶部 但在这种情况下这是必需的 这是不
  • cdk虚拟滚动问题

    有没有人遇到过 Angular 7 cdk 虚拟滚动在 mat tab 组中工作异常的问题 https github com angular material2 issues 13981 https github com angular m
  • jQuery 分页插件

    希望这是很容易解决的问题 我在理解上遇到了一些问题jQuery 分页 http plugins jquery com project pagination plugin 本质上 我想做的就是加载 PHP 文件 然后对结果进行分页 我试图摆脱
  • 基本类型的 C++ 类包装器

    我见过 使用的许多库都有 typedef 来提供可移植的 固定大小的变量 例如 int8 uint8 int16 uint16 等 无论平台如何 它们都是正确的大小 并且 c 11 本身使用头文件 stdint txt 来实现 H 最近在我
  • 如何在 C++ 中使用小数(浮点)?

    根据IEEE 754 2008 http en wikipedia org wiki IEEE 754 2008有 存在三种二进制浮点基本格式 可以使用 32 64 或 128 位进行编码 和两种十进制浮点基本格式 可以使用 64 或 12
  • 如何通过货币名称获取货币符号?

    我想要获得货币符号 例如 or 按货币名称 例如USD or EUR 对于英语 美国 我可以获得符号 如果英语 美国 设置为设备上的语言 Currency currency Currency getInstance Locale getDe
  • Firebase 在 iOS 上使用 Swift 多次调用“Observe”

    当我开始observer在 Firebase 数据库节点上 我注意到 Firebase 继续调用该方法observer即使没有数据变化 这是我的设置 FIRDatabase database reference withPath test
  • 如何正确配置嵌入式 OpenEJB 容器进行测试?

    这是我的 SLSB Stateless public class MyService PersistenceContext unitName abc EntityManager em public boolean exists int id
  • Intellij IDEA 未从 Groovy 项目中的 @Grab 导入依赖项

    我正在处理一个 groovy 脚本 它使用 Grab 注释导入依赖项 该脚本将在 IDEA 中从命令行运行 但是 在 IDE 中 导入显示为红色 不可解析 并且不会对导入的类提供自动完成功能 我正在通过代理访问企业存储库 该代理已在 IDE
  • 为 C++ 应用程序提供 HTTP Web 服务器功能

    我有一个 C 应用程序 正在寻找一个库 使其成为能够提供静态文件以及执行非常简单的任务的 HTTP 服务器 唯一的限制是它必须是跨平台的 我有什么选择 澄清 我的应用程序需要一个 Web 界面 该应用程序是执行其他任务的后台程序 我想提供一
  • 使用 HTML5 验证多个电子邮件地址

    我正在尝试构建一个电子邮件表单 该表单将多个逗号分隔的电子邮件作为输入并使用 HTML5 验证它们 我想使用以下正则表达式来检查输入的完整性 b A Za z0 9 A Za z0 9 A Za z 2 4 b 这是我尝试过的 这似乎不适用
  • 如何在 CakePHP 中定义模型的“全局”查找条件?

    是否可以定义在使用特定模型的所有控制器和功能中始终有效的查找条件 例如 如果我只想退回有库存的产品 无论如何 也许在模型中的某个地方 conditions gt array inStock gt gt 0 我认为您可以尝试在模型上执行一个函
  • 如何使用puppet为不同用户设置自定义bash环境?

    我刚刚开始使用 puppet 和 vagrant 为我们的团队设置开发环境 该团队由 8 名以上的开发人员组成 每个人都有其特定的 bash 配置等 我已经将所有软件安装在系统来快速部署新的开发虚拟机 但我不确定以自动化的方式为每个特定用户
  • Gradle 错误:字符串索引超出范围:0

    尝试使用 Gradle 编译 Android 项目并收到奇怪的错误 当我跑步时 gradlew tasks stacktrace 尝试过干净的重建 新的仓库克隆 不同的分支 同事能够构建 aok 寻找要检查 尝试解决此问题的想法 更新 恢复
  • Selenium 和 Geckodriver 在 Python 中创建 Webdriver 时出现问题

    我在 python 爬虫中有一段代码曾经可以工作 我将其安装在新系统上 现在正在尝试获取正确的依赖项 使用geckodriver 0 13 0并执行以下代码时 def login self print self colors OKBLUE
  • “你好世界”从何而来?

    hello world 通常是任何编程语言的第一个示例 我一直想知道这句话是从哪里来的 又是在哪里第一次使用的 我曾经被告知这是有史以来在计算机屏幕上显示的第一句话 但我找不到任何对此的参考 所以我的问题是 练习在哪里使用 hello wo
  • 有没有办法为 Kotlin 顶级函数引用 Java 类?

    我想使用以下方式在顶级函数中加载资源Class getResourceAsStream 有什么方法可以获取顶级函数将被编译到的类的引用 以便我可以编写 例如 val myThing readFromStream MYCLASS getRes
  • 如何在 IntelliJ 插件中“注册”新的模块类型?

    我是 IntelliJ 插件开发的初学者 但我希望我的插件在 新项目 新模块 窗口中注册新的模块类型 我已经搜索了插件开发人员的文档 但找不到任何有用的东西 我还查看了 Kotlin 和 Scala 等现有插件 它们也添加了新的模块类型 但
  • 是否有 Java OCR 工具将文本图像转换为可编辑的文本文件?

    我正在开发一个项目 该项目需要拍摄文本 来自任何文本的硬拷贝 并将该文本转换为文本文件 然后我想使用该文本文件来做一些不同的事情 例如提供新闻文章的超链接或允许用户编辑文档 到目前为止我尝试过的工具是来自sourceforge net的Ja