使用 OCR 从图像文件读取文本的 API

2023-11-24

我正在寻找 Java 中 OCR(光学字符识别)的示例代码或 API 名称,使用它我可以从图像文件中提取所有文本。无需将其与我使用下面的代码所做的任何图像进行比较。

public class OCRTest {

    static String STR = "";

    public static void main(String[] args) {
        OCR l = new OCR(0.70f);
        l.loadFontsDirectory(OCRTest.class, new File("fonts"));
        l.loadFont(OCRTest.class, new File("fonts", "font_1"));
        ImageBinaryGrey i = new ImageBinaryGrey(Capture.load(OCRTest.class, "full.png"));
        STR = l.recognize(i, 1285, 654, 1343, 677, "font_1");
        System.out.println(STR);
    }
}

你可以试试Tess4j or Tesseract 的 JavaCPP 预设。我更喜欢后者,因为它比前者更容易。 将依赖项添加到您的 pom `

        <dependency>
            <groupId>org.bytedeco.javacpp-presets</groupId>
            <artifactId>tesseract-platform</artifactId>
            <version>3.04.01-1.3</version>
        </dependency>

` 而且编码简单

import org.bytedeco.javacpp.*;
import static org.bytedeco.javacpp.lept.*;
import static org.bytedeco.javacpp.tesseract.*;

public class BasicExample {
    public static void main(String[] args) {
        BytePointer outText;

        TessBaseAPI api = new TessBaseAPI();
        // Initialize tesseract-ocr with English, without specifying tessdata path
        if (api.Init(null, "eng") != 0) {
            System.err.println("Could not initialize tesseract.");
            System.exit(1);
        }

        // Open input image with leptonica library
        PIX image = pixRead(args.length > 0 ? args[0] : "/usr/src/tesseract/testing/phototest.tif");
        api.SetImage(image);
        // Get OCR result
        outText = api.GetUTF8Text();
        System.out.println("OCR output:\n" + outText.getString());

        // Destroy used object and release memory
        api.End();
        outText.deallocate();
        pixDestroy(image);
    }
}

Tess4j 并不复杂,因为它需要安装特定的 VC++ 可再发行软件包。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 OCR 从图像文件读取文本的 API 的相关文章

随机推荐

  • 如何使用 PyQt5 在同一窗口中更改 UI?

    我刚刚开始使用 PyQt5 我一直在尝试完成一项看似非常简单的任务 但无法获得足够的信息 经过一番谷歌搜索后 我已经能够关闭一个窗口 并在加载另一个 UI 的情况下启动另一个窗口 但这不是我想要在这里做的 我想在同一个窗口中切换用户界面 我
  • 如何使用 Swing 创建可扩展面板?

    我想创建一个展开和折叠面板的列表 如下图所示 我还没有找到任何与此相关的 Swing 组件 所以我开始创建类似的东西 我尝试将按钮一个放在另一个下面 以填充可用宽度 但实际上不起作用 我只能看到最后添加的一个 JPanel panel ne
  • Xcode Instruments 8.3 显示设置按钮丢失

    在最新版本的 Instruments 8 3 中 显示设置按钮已被删除 并由文件 gt 记录设置对话框取代 使用分配工具时 我现在无法再激活自动快照 因为该选项已从右侧面板中消失 并且记录选项对话框仅显示分配工具的值 而不显示虚拟机跟踪器的
  • 如果数学移至内联函数,为什么 C++ 舍入行为(对于编译时常量)会发生变化?

    考虑以下函数 static inline float Eps const float x const float eps std numeric limits
  • 如何关闭 Eclipse 上的项目方面?

    我试图解决 Eclipse 中的问题 所以我单击了 Propreties gt Project Facets gt Click on the link 现在我有了新的看法Project Facets还有很多错误 我不知道如何返回上一步并取消
  • 核心数据,一对多子对象排序

    所以 假设我有一个父母孩子的商店 父母与孩子有一对多的关系 parent children 并且他们都有名字 现在 在初始获取父母时 我可以指定一个排序描述符以按名字顺序返回它们 但是如何按顺序请求孩子呢 如果我执行 parent chil
  • 如何让TextBox失去焦点?

    怎么做TextBox当用户触摸时失去焦点并隐藏屏幕键盘Enter虚拟钥匙 private void TheName KeyDown object sender KeyRoutedEventArgs e var tb sender as Te
  • Android:连接并打印到 Bixolon SPP-R200

    我想打印到Bixolon SPP R200据我所知 它是更容易使用 Android 设置的移动蓝牙打印机之一 但是我不知道如何开始 我想首先我必须通过蓝牙连接到打印机 我假设为此目的我求助于本机 Android 蓝牙 API 我可能需要某种
  • Rails 3.1:accepts_nested_attributes_for 和 has_one 关联 - 不起作用?

    我试图在 has one 关联模型上使用 Accepts nested attributes for 但绝对无处可去 我有两个模型 一个用户和一个位置 一位用户有一个位置 class User lt ActiveRecord Base cu
  • 登录管理页面后,Django 服务器立即停止

    单击登录按钮后立即尝试登录 django 管理页面 django 服务器停止 Django 新手尝试使用 venv 在虚拟环境中创建项目 这些是我所做的以下步骤 1 创建一个名为api的文件夹 2 使用创建虚拟环境python m venv
  • 使用 Linq to Entities 在一项操作中获取 COUNT 和 SKIP TAKE

    我在 Linq to Entities 支持的数据访问层中有一个数据调用 该数据访问层旨在进行分页调用 在此过程中 我需要选择数据的子集 例如 50 行 但还要获取所有匹配项的计数 以了解需要分页的总匹配项数 目前 我正在执行以下操作 va
  • “+”、“*”、“!”是什么意思?分支名称旁边的符号在 VS Code 中表示吗?

    在 VS Code 中有一个 在我的分行名称旁边签名 这意味着什么 检查源代码揭示 表示您有未暂存的更改 尚未添加 表示您已分阶段进行更改 已添加 但未提交 表示未合并的冲突 还可以有Rebasing 在最后 当你处于变基过程中时 所以 如
  • LINQ: ...Where(x => x.Contains(以“foo”开头的字符串))

    给定以下类的集合 public class Post public IList
  • 使用 python 导入我的数据库连接

    是否可以使用我的数据库凭据创建一个 py 文件来连接到 MySQL 数据库 Ex con ip 0 0 0 0 username root password pswd database test 然后在另一个文件上使用这个文件 like i
  • condition_variable.notify_all 是否应该被互斥锁覆盖?

    我已经实现了一个类 它允许我将线程与条件变量同步 我发现关于 notify all 应该在锁内还是在锁外完成的冲突信息 我发现了两种方式构建的例子 首先释放锁的理由是为了防止等待线程在被通知释放后立即阻塞在互斥锁上 反对首先释放锁的论点是等
  • SQL Server 在多个列上进行透视

    我正在尝试在多个列上进行旋转 我正在使用 SQL Server 2008 这是我迄今为止尝试过的 CREATE TABLE t id int Rscd varchar 10 Accd varchar 10 position int INSE
  • 跨站点将 DisplayFormatAttribute.ConvertEmptyStringToNull 的默认值设置为 false

    属性 DisplayFormatAttribute ConvertEmptyStringToNull 的默认值为 true 我想将整个站点的默认值设置为 false 或者按类或页面也可以 有没有办法可以做到这一点 这样我就不需要用以下内容装
  • Python 中带有字符串的 3D 散点图

    我尝试在 Python 中绘制 3D 散点图 其中 x 和 y 上有字符串类别 即神经网络的激活函数和求解器 z 轴上有浮点数 即 NN 的准确度分数 以下示例引发错误 ValueError 无法将字符串转换为浮点数 str1 我按照此文档
  • VueJS v-bind:背景图像的样式:url()

    根据VueJS docs div div 我尝试过几种模式 div div div div div div 但结果对于 HTML 无效style属性 有任何想法吗 尝试其他模式后 这是有效的模式
  • 使用 OCR 从图像文件读取文本的 API

    我正在寻找 Java 中 OCR 光学字符识别 的示例代码或 API 名称 使用它我可以从图像文件中提取所有文本 无需将其与我使用下面的代码所做的任何图像进行比较 public class OCRTest static String STR