1. 程式人生 > >Tesseract-OCR批量標註及合併資料集的一種思路

Tesseract-OCR批量標註及合併資料集的一種思路

背景

Tesseract標註訓練最根本的檔案是兩個:tiff檔案(儲存圖片)及box檔案(標註字元值和位置)
一般tiff用命令合成,box檔案用jTessBoxEditor生成。

背景知識

參考前一篇部落格,可以用python讀寫tiff檔案。

另外box每一行的格式如下(6個元素):

tag x1 y1 x2 y2 frame-num

tag即OCR識別後的字元的值,(x1,y1)是box左下角座標,(x2, y2)是box右上角的座標 。注意box檔案的座標系原點是圖片的左下角。

frame-num是圖片在tiff檔案裡的序號,從0開始。每一幀可以有多個標註,也可以有一個。

比如,一個標註數字的box檔案部分內容如下:

2 28 2 40 18 0
0 39 2 51 18 0
8 51 2 63 18 0
3 172 2 183 18 0
0 183 2 195 18 0
2 195 2 208 18 0
4 208 2 220 18 0
1 220 2 230 18 0
3 16 2 27 18 1
2 28 2 39 18 1
0 40 2 51 18 1
1 52 3 61 18 1
2 64 2 75 18 1
0 183 2 195 18 1
7 196 2 207 18 1
1 208 2 217 18 1
7 219 2 232 18 1
3 16 2 27 18 2
2 27 2 39 18 2
0 39 2 51 18 2
1 52 2 60 18 2
2 64 2 75 18 2

一個坑

jTessBoxEditor介面上顯示的box的位置,座標系原點在圖片左上角,描述box位置的4個元素是(x, y, w, h),其中(x,y)是box左上角的座標,(w,h)是框的寬高。

同一個軟體,兩種不同的座標系及box表示方法,不得不服作者。

官方說明文件這麼說的:

Note that the coordinate system used in the box file has (0,0) at the bottom-left; on computer graphics devices, however, (0,0) is defined as top-left. jTessBoxEditor uses and displays in the graphics device coordinates. The edited box files are still read and written in proper format.

批量標註和合並資料集的思路

我手上有一批同樣解析度的漢字圖片(有標註值),有了上面的知識,就可以將這些圖片合併到一個tiff檔案,並且將相應的標註資訊寫入一個box檔案。假設圖片解析度為64X64, 那麼(x1,y1,x2,y2)我就取(0,0,64,64)。

在這裡插入圖片描述
如果有兩個tiff及box,只要把圖片調整為相同的解析度,或者用空白補齊,就可以把圖片抽出來合併為一個tiff檔案,並適當修改box資訊,合併為一個box檔案。

參考資料

相關推薦

Tesseract-OCR批量標註合併資料思路

背景 Tesseract標註訓練最根本的檔案是兩個:tiff檔案(儲存圖片)及box檔案(標註字元值和位置) 一般tiff用命令合成,box檔案用jTessBoxEditor生成。 背景知識 參考前一篇部落格,可以用python讀寫tiff檔案。 另外box每一

TensorFlow基礎MNIST資料邏輯迴歸應用實踐-大資料ML樣本案例實戰

版權宣告:本套技術專欄是作者(秦凱新)平時工作的總結和昇華,通過從真實商業環境抽取案例進行總結和分享,並給出商業應用的調優建議和叢集環境容量規劃等內容,請持續關注本套部落格。QQ郵箱地址:[email protected],如有任何學術交流,可隨時聯絡。 1 TensorFlow基本使用操作

python merge、concat合併資料

資料規整化:合併、清理、過濾 pandas和python標準庫提供了一整套高階、靈活的、高效的核心函式和演算法將資料規整化為你想要的形式! 本篇部落格主要介紹: 合併資料集:.merge()、.concat()等方法,類似於SQL或其他關係型資料庫的連線操作。 合併資

機器學習與Tensorflow(3)—— 機器學習MNIST資料分類優化

一、二次代價函式 1. 形式:   其中,C為代價函式,X表示樣本,Y表示實際值,a表示輸出值,n為樣本總數 2. 利用梯度下降法調整權值引數大小,推導過程如下圖所示: 根據結果可得,權重w和偏置b的梯度跟啟用函式的梯度成正比(即啟用函式的梯度越大,w和b的大小調整的越快,訓練速度

【Python資料探勘課程】四.決策樹DTC資料分析鳶尾資料分析

        希望這篇文章對你有所幫助,尤其是剛剛接觸資料探勘以及大資料的同學,同時準備嘗試以案例為主的方式進行講解。如果文章中存在不足或錯誤的地方,還請海涵~一. 分類及決策樹介紹1.分類        分類其實是從特定的資料中挖掘模式,作出判斷的過程。比如Gmail郵箱

Python資料探勘課程 四.決策樹DTC資料分析鳶尾資料分析

        希望這篇文章對你有所幫助,尤其是剛剛接觸資料探勘以及大資料的同學,同時準備嘗試以案例為主的方式進行講解。如果文章中存在不足或錯誤的地方,還請海涵~ 一. 分類及決策樹介紹 1.分類         分類其實是從特定的資料中挖掘模式,作

《利用Python進行資料分析》第7章 合併資料

合併資料集 資料分析和建模方面的大量程式設計工作都是用在資料準備上的:載入、清理、轉換以及重塑。有時候,存放在檔案或資料庫中的資料並不能滿足你的資料處理應用的要求。pandas物件中的資料可以通過一些內建的方式進行合併: pandas.merge可根據一個或

Pandas:按列合併資料--merge函式

import numpy as np import pandas as pd from pandas import Series,DataFrame df1 = DataFrame({'key':['b

App推廣攻略:6渠道追蹤方法渠道資料分析的新思路

市場運營:App 渠道追蹤的5種方法以及渠道資料分析的兩大思路,移動網際網路的流量紅利逐漸褪去,數以百萬的 App 正在一個存量市場中搶佔使用者;誰能提高獲客效率,誰就有可能在激烈的競爭中勝。 都在做 App 推廣,為什麼就你的客單價居高不下? 同樣的100塊錢,為何別人花出了500

用caffe訓練自己的資料()

本文主要參考了:https://blog.csdn.net/heimu24/article/details/53581362                     https://blog.csd

利用R語言分析挖掘Titanic資料()

簡介 一個實際的資料探勘專案包括6個階段 1)提出正確的問題 問題本身確定了挖掘的對向與目標 2)資料採集 利用檔案的i/o函式,JDBC/ODBC,網路爬蟲技術從不同的系統,例如檔案,資料庫或internet採集資料,稱為原始資料。由於原始資

ML之DT:基於簡單迴歸問題訓練決策樹(DIY資料+七{1~7}深度的決策樹{依次進行10交叉驗證})

ML之DT:基於簡單迴歸問題訓練決策樹(DIY資料集+七種{1~7}深度的決策樹{依次進行10交叉驗證}) 輸出結果 設計思路   核心程式碼 for iDepth in depthList: for ixval in range(nxval)

ML之DT:基於簡單迴歸問題訓練決策樹(DIY資料+三深度的二元DT效能比較)

ML之DT:基於簡單迴歸問題訓練決策樹(DIY資料集+三種深度的二元DT效能比較) 輸出結果   設計思路   核心程式碼 for i in range(1, len(xPlot)): lhList = list(xPl

caffe-ssd 訓練自己的VOC資料():轉換VOC xml資料為lmdb格式

假設你已經做好了VOC資料標籤,也就是xml檔案,並且已經配置好了caffe-ssd的環境 第一步,在caffe-ssd/data目錄下本身自帶有如下資料夾: 然後在caffe-ssd/data目錄下新建一個資料夾命名為VOCdevkit: 然後data目錄下有:

使用CSocket、CSocketFileCArchive組合接收不到資料原因

這幾天在做網路程式設計,發現一個問題 客戶端使用CSocket、CSocketFile及CArchive組合, 關鍵程式碼如下: void CClientSock::init(CClientDlg* pdlgClient) {m_pdlgClient=pdlgClient;

Socket:半包粘包的處理方法

先說下思路: 當出現半包情況時,原本一整段的訊息被分成兩部分或多部分,導致用來判斷訊息是否完整的函式無法判斷,所以這時候就將先到達的內容儲存起來,用於與後到達的內容連線在一起。 當出現粘包情況時,訊息A和訊息B緊密的連線在一起,這就導致處理訊息的函式如果不將訊

vpn原理實現--隧道的實現

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Flash存取資料的另思路

在嵌入式專案中,為了讓裝置在斷電後某些關鍵引數不丟失,比如裝置ID,網路配置,外設配置等。我們會將這些關鍵的引數儲存到片內的Flash中。一般的做法都是在Flash劃分一塊空間做儲存引數用,並且裡面有一個空間儲存一個標誌,這個標誌指示了Flash中是否儲存了有效的引數。在第一次燒錄程式時,Flash

小程式 POST請求不到資料情況

背景 最近在進行小程式的開發,使用的是 ThinkPHP3.2 框架(當然跟框架沒啥關係) 測試發現,當使用 POST 請求資料時,伺服器後端無法獲得資料,但是改為 GET 請求方式就能順利獲取

Flex 與 Java 資料互動方式(Blazeds)

專案中用到前臺Flex展示,後臺Java查庫操作。這裡記錄一下互動操作。 1下載Blazeds Flex與Java互動有多種方式,常用的為Blazeds。 http://sourceforge.net/adobe/blazeds/wiki/download%20blazed