徒手打造一款PK 名片全能王 的名片識別應用

2021-06-14 18:43:21 字數 1261 閱讀 5238

脈可尋就不比了,那是一款有人工干預的產品,確實能做到100%準確,不過使用者的名片隱私問題很讓人擔心。

跑題了,今天要寫的是徒手打造一款商用的名片識別產品。徒手就是碼農不停用手敲出來了的,先簡要談一下原理

您看到此文,一定是對ocr有一定了解了,因為ocr是很小的領域,做相關研究的公司機構很少。

簡單的講,名片識別應用bcr應當處理如下幾個問題

名片切割

名片旋轉校正

名片分行

字元識別

ocr常見錯誤校正

字元分司校正

regular expression提取名片資訊

這些問題領域,前人已經研究的很深了,但要變成可商用的產品還是要付出點努力的。

先說名片分割:

最基本的方法有:連通區法和hough變換法,只要控制好引數,這兩種方法就能切出大部分的名片

下圖是乙個通過聯通區可以提取的名片:

但很少有名片能這麼便捷地讓你找到大的連通區,於是hough變換就必有可少了,找到四個焦點就ok了。

原理很簡單,但切名片著實費了很大功夫,要達到100%能找到名片的效果,還需要更多的輔助手段。

名片旋轉校正:

名片剪下後肯定會有有傾斜的,如果您google skew detect,會發現大量的**來解決這個問題,足以說名,角度矯正的重要性。

ocr引擎對字元角度都極度信賴,如果你的字元旋轉1度,那麼,字元識別準確可能會降低10%,如果偏差2度,那ocr引擎無法工作。

將角度調整到0.1度範圍內,實然就發現,識別的這麼準!

那如何才能將行校正的這麼準呢,方法有很多種,這裡我介紹我使用的一種方法(沒google到相同的處理方法)基於聚組成行skew detect方法。

名片剪下後,找出名片中所有的10號字以下的聯通區,對這些聯通區進行按行聚組計算,得到分行的結果,計算這些行的平均傾斜角度。然後再次聚組分行,就能得到很準確的結果,無需多次迭代。

ocr引擎可以使用開源的tesseract引擎,只是tesseract對大字符集的處理速度有很大問題,需要深入進行遮蔽一些處理才好用。

如何打造一款成功的產品

1.我們是做什麼的?2.我們的核心價值是什麼?3.競品的產異化在 我們要做的產品是什麼。滿足什麼使用者人群的什麼需求,我們產品最大的核心競爭力是什麼?與其他同類競品的差異化是什麼?使用者為何要選擇你的產品,而不是選擇其他,如果這些問題都沒有搞清楚,就等於沒有方向。2.我們的直接競爭對手?如果我們發現...

如何打造一款五星級的 APP ?

於是大家都是有了乙個問題,如何打造一款五星級的應用呢?想打造一款好的應用,筆者認為首先應該做到以下三點 一 功能 有特色定位要清晰 實用,需求解決徹底到位 二 互動 實用,需求解決徹底到位 操作友好,斱便 使用效率,快速完成目標 符合使用習慣 容錯能力 三 視覺 排版清晰明了 風格要適合功能 色彩搭...

打造一款屬於自己的go語言socket框架

socket是應用層與tcp ip協議族通訊的中間軟體抽象層,它是一組介面。其實說白了,socket就是系統提供的一組介面,來用於網路程式設計,既可以tcp也可以用於udp。func listening for go connhandle conn func connhandle conn net....