Tesseract 虚假空间识别

2024-01-09

我正在使用 tesseract 来识别序列号。这是可以接受的,存在常见问题,例如错误识别零和“O”、6 和 5、或 M 和 H。 除此之外,这个超正方体还向识别的单词添加了空格,而图像中没有空格。下图被识别为"HI 3H".

这张图片的结果是“FBKHJ 1R1”

因此,tesseract 添加了一个空格,尽管图像中实际上并没有空格。 是否有可能参数化超立方体的间距行为?

Edit

抱歉,忘了补充,我还有包含空格的序列号。所以我无法删除识别的序列号内的所有空格。

例如,下面的序列号中包含空格的图像经过超正方体识别后结果为:J4 F1583BB。除了字符识别错误之外,该图像的空间识别正确。

我的超正方体的实际参数是:

tesseract::TessBaseAPI tess;
tess.Init(NULL, "eng", tesseract::OEM_TESSERACT_ONLY);
tess.SetPageSegMode(tesseract::PSM_SINGLE_BLOCK);
tess.SetVariable("tessedit_char_whitelist",
            "ABCDEFGHIJKLMNOPQRSTUVWXYZ012345789");

char* out = tess.GetUTF8Text();
string text = string(out);

Edit

从已经存在的答案中可以看出,例如“J”和“I”之间的空间似乎比其他字符之间的空间多一点。我选择的字体类型是 Monotype 字体。这样做的原因是我认为这有助于超正方体的字符识别。这种等宽字体类型(每个字符具有相同的宽度)的缺点是内核(字符之间的空间)不同。 请参阅以下来源的示例图像Source https://en.wikipedia.org/wiki/Typeface

您认为哪种字体类型会达到更好的识别效果?


调整参数tosp_min_sane_kn_sp可能有帮助。我通过这样做解决了问题。

如果没有帮助,您可以尝试其他tosp_*参数,或解决空间源代码“to space.cpp”

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

Tesseract 虚假空间识别 的相关文章

  • 如何自定义 DataTable 列的排序

    我需要对数据表列的值进行排序 该列包含字符串 整数或混合文本 例如 数据表列包含如下值 23 18 12 store 23 store a1 1283 25 如果我使用对值进行排序Dataview sort 方法会按此顺序产生 12 128
  • 测试 hdf5/c++ 中的组是否存在

    我正在打开一个现有的 HDF5 文件来附加数据 我想向那个叫做的小组保证 A存在以供后续访问 我正在寻找一种简单的方法来创建 A有条件地 如果不存在则创建并返回新组 或者返回现有组 一种方法是测试 A存在 我怎样才能高效地做到这一点 根据
  • 如何在 C# 事件中区分更改是由代码还是由用户进行?

    我有一个简单的TextBox一开始是空的 我有一个简单的事件 TextChanged 可以知道用户何时更改了其中的任何内容TextBox 但是 如果我自己在代码中对其执行任何操作 该事件就会触发 喜欢设置textbox Text Test
  • boost线程在中断时不打印退出消息

    我有这段代码用于执行三个线程 其中第二个线程应在按 Enter 时中断并打印退出消息 void input val DO STUFF return void process val DO STUFF try cout lt lt waiti
  • 为什么C Clock()返回0

    我有这样的事情 clock t start end start clock something else end clock printf nClock cycles are d d n start end 我总是得到输出 时钟周期是 0
  • 当我单击 GridView 项时返回 ImageView 实例

    当我点击GridView项时如何返回ImageView实例 我为 ItemClick 创建自定义绑定事件 public class ItemClickSquareBinding MvxBaseAndroidTargetBinding pri
  • 字节到二进制字符串 C# - 显示所有 8 位数字

    我想在文本框中显示一个字节 现在我正在使用 Convert ToString MyVeryOwnByte 2 但是 当字节开头有 0 时 这些 0 就会被删除 例子 MyVeryOwnByte 00001110 Texbox shows g
  • __FUNCTION__ 宏的 C# 版本

    有人对 C FUNCTION 宏的 C 版本有好的解决方案吗 编译器似乎不喜欢它 尝试使用这个代替 System Reflection MethodBase GetCurrentMethod Name C 没有 LINE or FUNCTI
  • C++ 在 Vector 中使用不可分配的对象

    我想将对象列表存储在std vector 但对象包含引用且无法分配给 但是 我可以复制构造该对象 我能想到的唯一选择是使用指针来包装对象并在需要分配指针时重新设置指针 但这样做的语法会显着降低可读性 特别是在使用迭代器时 我更喜欢另一种选择
  • 控制台应用程序 .net Core 2.0 的配置

    在 net Core 1 中我们可以这样做 IConfiguration config new ConfigurationBuilder AddJsonFile appsettings json true true Build 这样就可以使
  • C中有const吗?

    这个问题可能很幼稚 但是 有没有constC 中的关键字 从哪个版本开始 之间有任何语义和 或句法差异吗const在 C 和 C 中 C 和 C 之间在语法上没有差异const关键字 除了一个相当晦涩的关键字 在 C 中 自 C99 起 您
  • 捕获当前正在播放的声音

    是否可以捕获计算机上当前播放的声音 如果能够将其保存为 mp3 就好了 但我认为这样做会存在一些法律问题 所以 wav 也可以 我环顾四周 有人建议使用虚拟音频线之类的东西 在 C 中捕获声音输出 https stackoverflow c
  • 在生产者-消费者情况下使用条件变量

    我正在尝试了解条件变量以及如何在生产者 消费者情况下使用它 我有一个队列 其中一个线程将数字推入队列 而另一个线程从队列中弹出数字 当生产线程放置一些数据时 我想使用条件变量向消费线程发出信号 问题是有时 或大多数时候 它只将最多两个项目推
  • 在可观察项目生成时对其进行处理

    我有一个IObservable它会生成一次性物品 并且在其生命周期内可能会生成无限数量的物品 因此 我想在每次生成新项目时处理最后一个项目 因此Using http reactivex io documentation operators
  • 为什么 C 函数不能返回数组类型?

    我是 C 语言新手 想知道 为什么 C 函数不能返回数组类型 我知道数组名是数组第一个值的地址 而数组是 C 中的二等公民 您自己已经回答了这个问题 数组是二等公民 C 按值返回 数组不能按值传递 因此不能返回它们 至于为什么数组不能按值传
  • 通过 MSBuild 调用 cl.exe 时无限期挂起

    我正在尝试在我的 主要是 C 项目上运行 MSBuild 想象一下一个非常庞大的代码库 Visual Studio 2015 是有问题的工具集 Windows 7 SP1 和 VS 2015 更新 2 即使使用 m 1 从而迫使它仅使用一个
  • 删除对象时指针自动指向空

    假设我有一个对象和其他几个不同类类型的对象中的 10 个指向它的指针 如果对象被删除 这些指针必须设置为空 通常我会将对象的类与具有指向它的指针的类互连 以便它可以通知它们它正在被删除 并且它们可以将它们的指针设置为空 但这也有一个负担 即
  • 从 C# 中的 .NET SecureString 读取单个字符?

    WPF 的PasswordBox 返回一个SecureString 它对窥探者隐藏密码 问题是你最终必须获得密码的值 而我在网上找到的建议都涉及将值复制到字符串中 这会让你回到窥探者的问题 IntPtr bstr Marshal Secur
  • ASP.NET Core:会话 ID 始终变化

    今天启动了一个全新的 ASP NET Core 网站 按照说明添加会话 我们在索引页上打印出会话 ID 它始终是唯一的 我认为这可能是 cookie 合规性 所以我在 Chrome 的高级设置和调试器中删除了所有 cookie 但横幅不会再
  • 在 C# 中读取/写入命令行程序

    我正在尝试与 C 的命令行程序进行对话 它是一个情绪分析器 它的工作原理如下 CMD gt java jar analyser jar gt Starting analyser 这是我想从我的 C 程序插入内容的地方 例如 I love y

随机推荐

  • 了解基指针和堆栈指针:在 gcc 输出的上下文中

    我有以下 C 程序 int main int c 10 0 0 0 0 0 0 0 0 1 2 return c 0 当使用 gcc 的 S 指令编译时 我得到以下程序集 file array c text globl main type
  • 了解嵌套 Spring @Transactional 的工作原理

    我正在将 EJB 应用程序移植到 Spring 但遇到了一些问题 该应用程序使用 eclipselink 独立运行 这就是我们选择 spring 的原因 在此应用程序中 我需要创建一个订单 为此我首先需要创建一个客户 OrderLines
  • 检查“当前时间”是否在 2 次之间。但还要检查前一天的夜晚情况

    例如 我有 2 次 10 00 和 1 00 现在我想检查当前时间 是否在 javascript 中的这 2 次之间 问题是 在这种情况下 关门时间是第二天 因此它早于开门时间 由于某种原因我无法解决这个问题 我该如何以正确的方式做到这一点
  • 还有充分的理由支持 JDK 1.4 吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在考虑用 Java 构建一个开源项目 并且正在激烈争论不支持 JDK 1 4 及更早版本 该框架绝对可以使用较旧的 Java 模式和习惯用法
  • 如何使用 %ROWTYPE 获取游标值

    我做了一个如下所示的过程 我想获取游标值并从其他循环中提取这些值告诉我最好的方法是我的代码 CREATE OR REPLACE PROCEDURE TEST P EMP ID NUMBER TRIGER BY VARCHAR2 AS CUR
  • 用于包装采用 void* 参数的 C 回调的模板魔术?

    假设我正在使用 C API 它可以让您注册回调函数void 关闭 void register callback void func void void closure 在 C 中 拥有比void 所以我想创建一个包装器 让我注册强类型的 C
  • 将 zlib 过滤器与套接字对一起使用

    由于某种原因 zlib deflate过滤器似乎不适用于由生成的套接字对stream socket pair 从第二个套接字中可以读取的只是双字节 zlib 标头 之后的所有内容均为 NULL Example
  • 致命错误:调用未定义的方法 mysqli::error() [重复]

    这个问题在这里已经有答案了 我可以连接 但是当涉及到准备好的语句时 这就是我得到的错误 有什么问题吗 代码 Open connection db new mysqli DB HOST DB USER DB PASSWORD DB DATAB
  • 在 Swift 中将 CGFloat 转换为字符串

    这是我目前在 Swift 中将 CGFloat 转换为 String 的方法 let x Float Float CGFloat let y Int Int x let z String String y 有没有更有效的方法来做到这一点 您
  • 如何将数据库的结果显示到输入区域?

    正如您在我的 php 代码中看到的 我尝试通过 值 将数据库的结果回显到输入区域 但是这不断出现语法错误 有人可以
  • 如何防止在堆上创建对象?

    有谁知道如何在独立于平台的 C 代码中阻止在堆上创建对象 也就是说 对于 Foo 类 我想阻止用户这样做 Foo ptr new Foo 并且只允许他们这样做 Foo myfooObject 有人有什么想法吗 Cheers 尼克的回答 ht
  • 使用 Haskell 播放 wav 文件

    有没有一种简单 直接的方法可以使用某些库从 Haskell 播放 WAV 文件 并且可能使我可以一次播放许多声音 我知道 OpenAL 但我不是在编写一些高级音频合成程序 我只是想播放一些声音来进行一些小游戏 理想情况下 API 可能类似于
  • 如何使用 NX/Nrwl 为 Angular 创建应用程序特定配置?

    所以我有以下项目结构 apps car libs app car shared config 对于每个应用程序 我想提供不同的配置 可以在分组库中使用 export interface DefaultAppConfig language s
  • 如何让按钮看起来就像被按下一样?

    使用 VS2008 C Net 2 和 Winforms 如何使常规按钮看起来 按下 想象一下这个按钮是一个开 关开关 ToolStripButton有 Checked 属性 但常规 Button 没有 您可以用来获取此选项的一种方法是放置
  • ListFragment 的 FragmentPagerAdapter getItem 错误

    我看了很多代码 但无法弄清楚这一点 http developer android com reference android support v4 app FragmentPagerAdapter html http developer a
  • Hibernate 实体有一个通用基类吗?

    Hibernate 实体是否有一个通用基类 即具有 id 版本和其他通用属性的 MappedSuperclass 有什么缺点吗 Example MappedSuperclass public class BaseEntity private
  • 递归解析关联数组时如何检查 PHP 中的循环引用?

    我用循环引用创建了这个数组 arr array 1 gt one 2 gt two arr 3 arr 我有一个函数可以递归地打印出数组中的值 但我确实无法解决创建循环引用检查的问题 你怎么能这么做呢 我用于打印数组的当前函数复制如下 我没
  • 这个JSON的数据结构是怎样的?

    我试图使用 Gson 将 Json 解析为 Java 但是当我使用 fromJson 时 我总是得到 null 谁能帮我解释一下这个数据结构 谢谢 d results metadata uri https api datamarket az
  • 有没有办法用 Java 下载 Microsoft Azure 数据中心 IP 范围?

    我的问题类似于有没有办法以编程方式自动下载 Microsoft Azure 使用的最新 IP 范围 https stackoverflow com questions 28798014 ms azure automatically down
  • Tesseract 虚假空间识别

    我正在使用 tesseract 来识别序列号 这是可以接受的 存在常见问题 例如错误识别零和 O 6 和 5 或 M 和 H 除此之外 这个超正方体还向识别的单词添加了空格 而图像中没有空格 下图被识别为 HI 3H 这张图片的结果是 FB