日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android自动识别文字,Android文字识别tesseract ocr -训练样本库 识别字库

發布時間:2024/3/13 Android 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android自动识别文字,Android文字识别tesseract ocr -训练样本库 识别字库 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

安裝tesseract ocr引擎和jTessBoxEditor

安裝jTessBoxEditor

開始制作box

準備好訓練的圖片

將圖片轉為tif格式的樣本圖片

合并樣本圖片

修改box文件

用腳本生成 或按下面步驟

生成font_properties

生成

訓練

生成字符集文件

生成shape文件

生成聚集字符特征文件

生成字符正常化特征文件

合成最終文件

改名

2.合并字庫文件

在上一篇文章tess_two Android圖片文字識別中,使用tess_two完成了簡單的文字識別。

博客地址

但是發現一個很明顯的問題是,默認的識別速度比較慢。識別四個很明顯的字需要將近兩秒。

DemoGitHub可以試試。

tess_two用的是tesseract ocr引擎

查看用到的官方提供的中文識別庫chi_sim.traineddata文件有52M。里面肯定是包含了很多的訓練和文字的。

我用不了那么多字,然后就按官方和網上的資料自己做了一個識別庫,這個庫只能識別訓練過的文字。速度生成的文件應該跟訓練的字數有關的,我實驗了幾個字,只有100多k。

看看速度,快了很多。

下面大致記錄一下制作訓練識別庫的方法。相對比較簡單。

安裝tesseract ocr引擎和jTessBoxEditor

在官網上可以找到Window和Mac的安裝方法,window的有專門的額客戶端。我的是Mac,所以選的是Homebrew安裝。

Homebrew 是一個包管理器,如果沒裝的話,在終端執行ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"就會自動裝好。

單純的安裝tesseract ocr引擎是可以直接用官網的命令brew install tesseract

但是,我后面要用到訓練樣本的命令,所以我們要用到的安裝命令是brew install --with-training-tools tesseract,否則后面一些命令會找不到。

如果初次安裝用了第一個,那么可以先用brew uninstall tesseract卸載掉,然后執行brew install --with-training-tools tesseract重新安裝。

裝好之后,找到在上篇文章中下載的chi_sim.traineddata。

然后復制到/usr/local/Cellar/tesseract/3.05.00/share/tessdata中備用。里面已經自帶了eng.traineddata。 這一步不是必須的,而且我這樣好想還容易出錯。

安裝jTessBoxEditor

這里提供了很多第三方的訓練工具,我選第一個jTessBoxEditor。

jTessBoxEditor是基于java的,多以可以跨平臺,下載下來在Mac和Windows上都能運行。

下載下來是這樣的

jTessBoxEditor

啟動jTessBoxEditor.jar就能打開客戶端。

這里我有一個疑問,別人電腦上都能雙擊這個文件打開,而我的電腦雙擊一閃就沒了,只能用在終端里打開。。

開始制作box

準備好訓練的圖片:

什么格式應該沒關系,反正都要轉化成tif格式的。

將圖片轉為tif格式的樣本圖片

方法有很多,我用的在線轉化。

下載下來的文件是

要手動吧后綴的.html去掉變成.tif文件,比較麻煩。所以不推薦用這個轉換工具。。

改名后

合并樣本圖片

大家應該注意到有一個new文件夾,這個文件夾用來放之后生成的各種文件的,包括最終的traineddata文件。

打開jTessBoxEditor.jar,然后點菜單上的Tool->Merge TIFF

保存到new文件夾中,保存的時候注意名字sll.normal.exp0.tif

關于名字 sll.normal.exp0.tif

官網的寫法是這樣的

[lang].[fontname].exp[num].tif

[lang]是語言,隨便起,這里的叫sll

[fontname]是字體,隨便起,這里叫 normal

[num]我也不知道啥意思,寫的是數字0

這兩個都是自定義的,后面會用到,所以要記住。

點擊保存后,會在new文件夾中生成合并的sll.normal.exp0.tif文件

然后執行命令,

如果前面復制了chi_sim.traineddata文件的話用下面的

tesseract sll.normal.exp0.tif sll.normal.exp0 -l chi_sim batch.nochop makebox

否則用這個,默認的。上面那個有時候會出錯沒我也不知道為什么。

tesseract sll.normal.exp0.tif sll.normal.exp0 -l eng batch.nochop makebox

會在當前文件夾下生成sll.normal.exp0.box文件

修改box文件

打開jTessBoxEditor.jar,點擊Box Editor->open

然后選上一步的tif文件,會自動打開綁定的box文件。

在里面可以對他的識別區域,識別結果進行一些修改,達到我們正確的識別目的

全部修改完后點擊save。

用腳本生成

下面的步驟可以寫一個腳本自動完成。生成box文件就一行代碼,就不用寫了。

比如,在new文件夾下創建一個gettraineddata.shell,里面寫

#!/bin/sh

read -p "輸入你語言:" lang

echo ${lang}

read -p "輸入你的字體:" font

echo ${font}

echo "所以完整文件名為:"

echo ${lang}.${font}.exp0.tif

echo "開始。。。"

echo ${font} 0 0 0 0 0 >font_properties

tesseract ${lang}.${font}.exp0.tif ${lang}.${font}.exp0 nobatch box.train

unicharset_extractor ${lang}.${font}.exp0.box

shapeclustering -F font_properties -U unicharset ${lang}.${font}.exp0.tr

mftraining -F font_properties -U unicharset -O unicharset ${lang}.${font}.exp0.tr

cntraining ${lang}.${font}.exp0.tr

echo "開始重命名文件"

mv inttemp ${font}.inttemp

mv normproto ${font}.normproto

mv pffmtable ${font}.pffmtable

mv shapetable ${font}.shapetable

mv unicharset ${font}.unicharset

echo "生成最終文件"

combine_tessdata ${font}.

echo "完成"

當然里面的東西可以改,要輸入的語言和字體是根據tif文件的名字來的

比如我的文件是sll.normal.exp0.tif

所以就這樣輸入

如果不出錯,就能看見new里面變成了這樣

有了我們需要的normal.traineddata識別庫。

生成font_properties

在new文件夾中執行下面命令,會生成一個font_properties文件,里面的內容是normal 0 0 0 0 0 。

echo normal 0 0 0 0 0 >font_properties

六個代表的東西是 fontname italic bold fixed serif fraktur

像第一個是字體名,前面我起的是normal。

后面的值是0或1,可以看一下默認的文件font_properties

生成

接下來就是一條條命令生成一個個文件了

訓練

tesseract sll.normal.exp0.tif sll.normal.exp0 nobatch box.train

生成字符集文件

unicharset_extractor sll.normal.exp0.box

生成shape文件

shapeclustering -F font_properties -U unicharset sll.normal.exp0.tr

生成聚集字符特征文件

mftraining -F font_properties -U unicharset -O unicharset sll.normal.exp0.tr

生成字符正常化特征文件

cntraining sll.normal.exp0.tr

合成最終文件

改名

上面幾步完成后,會看到下面五個文件

然后全部重命名,前面加上normal. 就是字體名,變成

合并字庫文件

combine_tessdata normal.

看 哇 拿到了我們需要的normal.traineddata文件。

必須確定的是第type 1、3、4、5的數據不是-1,才算成功。

然后按上一篇的方法用吧!

總結

以上是生活随笔為你收集整理的android自动识别文字,Android文字识别tesseract ocr -训练样本库 识别字库的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。