Tesseract3.02训练生成新的识别语言库的详细步骤

2023-11-16

说明:本文参考了很多前辈的资料,主要是:tesseract-OCR3.0语言库训练步骤,再结合自己的实践操作,个人感觉官网的教程是最权威的,耐着性子看完,收获很大,比网上到处看别人理解的更好,毕竟每个人理解的都是自己的,不全面,当然也包括本文,对英文还可以的,还是推荐去官网看训练教程,呵呵


第一部分:训练前的说明

        要训练一个新语言(自定义语言或者某种自然语言)对应的traineddata文件,需要产生下列过程文件:

  1. lang.config
  2. lang.unicharset  //语料的所有字符
  3. lang.unicharambigs  //取代了原来的DangAmbigs文件,手工设置的
  4. lang.inttemp
  5. lang.pffmtable
  6. lang.normproto
  7. lang.punc-dawg
  8. lang.word-dawg
  9. lang.number-dawg
  10. lang.freq-dawg

      在这十个文件中,红色标示(共4个,都是训练过程中生成的)的是必须的,其他的文件可选。当这些文件都准备好之后,再使用combine_tessdata进行最后的合并工作,生成lang.traineddata ,这个文件就是最终训练出来语言库,他只是一些输入文件的串联,用一张表记录这与已知文件类型的偏移量。

同时lang.user-words,may still be provided separately.

>>>注释:如果你只是想识别有限的字体,比如一种字体,只需要一个单独的训练页就够了,其它的文件不需要提供,这样反而会大幅度提高准确率,当然了,这要根据你的应用决定。旧版的DangAmbigs现在已经用unicharambigs文件取代。

第二部分:训练过程
1、训练材料的准备和获得
       首要要确定要用的所有字符,准备一个包含这样字符的类似Word的文档处理程序,不要使用图片进行训练,此外特别需要注意以下几点:
  • 每个字符至少需要10个样本,对罕见的字符5个样本也可以
  • 对高频字符至少需要20个样本
  • 不要自作聪明地把字符聚集在一起,非字符聚集在一起,而是要保留其原来的样子,这样使得文本行分割程序更容易找到特殊字符的基线。

改进:tesseract3.03添加了自动化处理的工具:

  准备一个包含训练字符的txt文件training_text.txt,然后找到你需要识别的字体文件,比如你想识别宋体的字符,就找到宋体的truetype或者opentype文件。然后运行下面的命令来创建一个tif/box文件对。

training/text2image --text=training_text.txt --outputbase=eng.TimesNewRomanBold.exp0 --font='Times New Roman Bold'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Tesseract3.02训练生成新的识别语言库的详细步骤 的相关文章

随机推荐

  • JavaScript去除数组对象中多余字段,提取对象数组中某些的属性组成新的对象数组。

    对象数组中每个对象包含很多属性 批量操作只需要要用到一两个属性 可以提取原数组中的属性组成一个新的对象数组 const data classtypecode 新人对象 NST suoxie classtypename null trains
  • 一般函数指针和类的成员函数指针

    一般函数指针和类的成员函数指针 转载请注明原文网址 http www cnblogs com xianyunhe archive 2011 11 26 2264709 html 函数指针是通过指向函数的指针间接调用函数 函数指针可以实现对参
  • 如何利用Java完成在数组中插入数值并且排序(从大到小)

    首先要对数据组进行扩容 然后定义新的数据组 将旧数据组的值重新赋值 最后开始插入数值 数组插入值 前提 数组本身有序 插入要保证不会越界 步骤 1 从后向前遍历 2 每个值要与插入的值进行比较 不符合顺序的后移 3 符合顺序的 要在后方插入
  • AD之PCB中元器件旋转45度后两元器件无法靠得很近

    最近笔者因为在画一块圆形PCB板 所以为了节省PCB空间 有时需要将元器件倾斜放置 在这时就产生了一个问题 问题情况及解决办法记录如下 问题描述 首先是正常竖直放置时 两元器件可以放置得很近 这没有问题 然后将两元器件同时选中并旋转45度
  • 软件工程基础知识--需求分析

    软件需求 在进行需求获取之前 首先要明确需要获取什么 也就是需求包含哪些内容 软件需求是指用户对目标软件系统在功能 行为 性能 设计约束等方面的期望 通常 这些需求包括功能需求 性能需求 用户或人的因素 环境需求 界面需求 文档需求 数据需
  • Numpy 数组切片

    一 列表切片 一维数组 1 1 切片原理 列表切片是从原始列表中提取列表的一部分的过程 在列表切片中 我们将根据所需内容 如 从何处开始 结束以及增量进行切片 剪切列表 Python中符合序列的有序序列都支持切片 slice 例如列表 字符
  • 嵌入式成长手册——初级嵌入式开发工程师技术栈

  • 【python爬虫】爬虫程序模板(面向对象)

    爬虫代码模板 程序结构 class xxxSpider object def init self 定义常用变量 比如url或计数变量等 def get html self 获取响应内容函数 使用随机User Agent def parse
  • 了解 HTTP3.0 吗?简要说一下 HTTP 的一个发展历程?

    码字不易 有帮助的同学希望能关注一下我的微信公众号 Code程序人生 感谢 代码自用自取 一 HTTP 3 0 HTTP3 0 也称作HTTP over QUIC HTTP3 0的核心是QUIC 读音quick 协议 由Google在 20
  • 埋点数据

    原文源自 http www woshipm com pmd 751876 html 本文作者将从一个埋点系统设计者的角度通俗系统地讲解埋点的全过程 涉及到埋点基础知识 埋点作用 埋点方法 埋点数据流程 埋点应用 埋点管理等信息 埋点是什么
  • STM32之中断与事件---中断与事件的区别

    转自http blog csdn net flydream0 article details 8208463
  • docker添加新的环境变量_关于docker:在Dockerfile中,如何更新PATH环境变量?

    我有一个从源代码下载和构建GTK的dockerfile 但以下行没有更新我的图像的环境变量 RUN PATH opt gtk bin PATH RUN export PATH 我读到我应该使用ENV来设置环境值 但以下指令似乎也不起作用 E
  • conda的安装与使用

    conda的安装与使用 一 conda可以干嘛 官方介绍 Anaconda 是一个包含数据科学常用包的 Python 发行版本 它基于 conda 一个包和环境管理器 衍生而来 你将使用 conda 创建环境 以便分隔使用不同 Python
  • 苏神文章解析(6篇)

    苏神文章解析 文章目录 苏神文章解析 1 浅谈Transformer的初始化 参数化与标准化 1 1采样分布 截尾正态分布 1 2 正交初始化 Xavier初始化 1 3 直接标准化 1 4 NTK参数化 1 5 残差连接 2 模型参数的初
  • 图像边缘算法——计算图像边缘(OpenCV)

    目录 一 算法描述 二 计算欧氏距离的Python代码 三 完整的代码 四 结果 一 算法描述 算法的基本原理是 将当前像素与邻接的下部和右部进行比较 如果相似 则将当前像素设置为白色 否则设置为黑色 如何判定像素相似呢 应用欧式距离算法
  • 吐血整理!Python程序员常见的几种变现方式!

    今天聊一个特俗但是大家都想的事情 那就是 赚钱 这件事 先说为什么这个事情 特俗 因为其实我发现我身边大部分程序员不爱谈钱 或者羞于谈钱 加上程序员工资普遍比较高 所以早期都没啥压力 但是随着年龄增大 薪资的涨薪幅度放缓 问题逐渐就暴露出来
  • n个人围成一圈 报数3 python

    n int input count 0 a list range 1 n 1 while len a gt 1 b a for i in range len a count 1 if count 3 0 a remove b i print
  • 不能使用clr编译c文件 怎么强制用clr_一名合格的 C/C++ 开发者拥有这些能力,你就可以去面试了!...

    首先你需要一个显得十分有 经验 的发型 然后拥有一身程序员的基本装备 比如 言归正传 在大多数开发人员的认知中 C C 是一门非常难学的编程语言 很多人知道它的强大 但因为 难 造成的恐惧让很多人放弃 在我看来 C C 一旦学成 其妙无穷
  • Hive简介和安装

    1 Hive是基于hadoop的数据仓库解决方案 由facebook贡献给Apache Hive出现的初衷是让不熟悉编程的数据分析人员也能够使用hadoop处理大数据 这是怎么实现的呢 2 我们先来看看Hive提供的接口 从下面Hive的架
  • Tesseract3.02训练生成新的识别语言库的详细步骤

    说明 本文参考了很多前辈的资料 主要是 tesseract OCR3 0语言库训练步骤 再结合自己的实践操作 个人感觉官网的教程是最权威的 耐着性子看完 收获很大 比网上到处看别人理解的更好 毕竟每个人理解的都是自己的 不全面 当然也包括本