表格识别2-用jTessBoxEditor训练tesseract模型

2023-11-02 01:58

本文主要是介绍表格识别2-用jTessBoxEditor训练tesseract模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

导语:

上文我们讲到了怎么使用tesseract,本文讲一下怎么对手写的数字进行训练,看完之后可以举一反三对
其他语言比如中文或者其他文字甚至是符号进行自己的训练,方式方法都是通用的。

前提条件:

1.安装java环境(因为jTessBoxEditor使用java的写一个图形化的工具,所以需要java的运行环境,不会的请自行谷歌啦)
2.安装好tesseract(sourceforge下载地址)
3.识别不准的图片(这里我先手写了一张12345的图片,识别出来的是1365,默认使用的eng语言库)

如下:

结果:

tesseract 12345.png stdout
1365

训练步骤:

1.打开jTessBoxEditor
在命令行输入

java -jar jTessBoxEditor

就会弹出一个交互式的窗口

2.选择Tools->Merge TIFF

3.然后选择一张图片,这里我创建了一个train的目录用来放图片和接下来的各种文件
文件名命名格式是:[lang].[fontname].exp[num].tif
lang-语言
fontname-字体
num-自定义的数字

这里因为是识别的数字,所以我取的是num.test.exp0.tif。
后面的步骤会反复用到这个名字。

完成后jTessBoxEditor工具会出现下面的弹框,并且在当前train目录会生成num.test.exp0.tif的文件。

4.生成box文件,box就是把每个识别出来的文字框起来

输入命令:
tesseract num.test.exp0.tif num.test.exp0  --psm 3 batch.nochop makebox

运行成功会生成一个num.test.exp0.box的文件

5.接下来训练刚才的图片(其实就是手动把错误的识别结果改成正确的)
打开jTessBoxEdtor->Box Editor->Open,打开之前的num.test.exp0.tif,这里会使用到同目录下的num.test.exp0.box,所以要都放在同一个目录下。
把没有识别出来的2,在Char栏目填上,把识别错误的4改为6。修改完成后记得按回车然后Save保存起来。

6.生成font_properties文件
可以手创建一个空文件然后填上test 0 0 0 0 0
说明:

test 0 0 0 0 0
【语法】:<fontname> <italic> <bold> <fixed> <serif> <fraktur>
【语法】:fontname为字体名称,italic为斜体,bold为黑体字,
fixed为默认字体,serif为衬线字体,fraktur德文黑字体,
1和0代表有和无,精细区分时可使用

也可以使用命令:

echo test 0 0 0 0 0 > font_properties

记住字体名称必须和之前的num.test.exp0中的test保持一致。
7.生成训练文件

tesseract num.test.exp0.tif num.test.exp0 nobatch box.train

8.生成字符集

unicharset_extractor zwp.test.exp0.box

执行成功会生成unicharset的文件

这里有一点要注意,如果你安装的tesseract是没有带训练工具的话,你会被提示

zsh: command not found: unicharset_extractor

可以参考另一篇blog:zsh: command not found: unicharset_extractor

9.生成聚字符特征文件

输入命令:
mftraining -F font_properties -U unicharset -O num.unicharset num.test.exp0.tr

执行成功后会生成inttemp、pffmtable、shapetable和num.unicharset四个文件

10.生成字符正常化特征文件

cntraining num.test.exp0.tr

执行成功后会生成normproto的文件

11.重命名文件

mv normproto num.normproto
mv inttemp num.inttemp
mv pffmtable num.pffmtable
mv shapetable num.shapetable

12.合并训练文件

combine_tessdata num.

会生成一个num.traineddata的文件,看到这里是不是笑开了花?没错这个就是最终的训练集了,把这个放到tesseract的tessdata目录之下。
可能是/usr/local/Cellar/tesseract/4.1.1/share/tessdata也可能是/usr/local/share/tessdata

13.最终结果:

总结:

1.要想完成这个流程要使用安装了训练工具的tesseract,tesseract现在好像不支持带训练工具的安装参数了,安装会报下面的错误(本人使用的是tesseract4.1.1版本) Error: invalid option: --with-training-tools
,所以安装训练工具需要自己编译安装,可以参考博客
2.其实整个步骤中绝大部分命令可以使用脚本帮忙完成掉,只有jTessBoxEditor标注矫正结果需要使用到界面,如果可以把jTessBoxEditor标注结果做成一个工具,矫正完剩下的命令都自动执行就可以批量的训练了。

欢迎关注我的公众号,更多干货等着你,你的支持是我继续创作的动力~

在这里插入图片描述

这篇关于表格识别2-用jTessBoxEditor训练tesseract模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/327305

相关文章

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

使用Python实现网页表格转换为markdown

《使用Python实现网页表格转换为markdown》在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,本文将使用Python编写一个网页表格转Markdown工具,需... 在日常工作中,我们经常需要从网页上复制表格数据,并将其转换成Markdown格式,以便在文档、邮件或

Python实现pdf电子发票信息提取到excel表格

《Python实现pdf电子发票信息提取到excel表格》这篇文章主要为大家详细介绍了如何使用Python实现pdf电子发票信息提取并保存到excel表格,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录应用场景详细代码步骤总结优化应用场景电子发票信息提取系统主要应用于以下场景:企业财务部门:需

Python实现获取带合并单元格的表格数据

《Python实现获取带合并单元格的表格数据》由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,所以本文我们就来聊聊如何使用Python实现获取带合并单元格的表格数据吧... 由于在日常运维中经常出现一些合并单元格的表格,如果要获取数据比较麻烦,现将将封装成类,并通过调用list_exc