我的目標是寫Rails的驗證類,它是能夠使用從名片的OCR識別文本,並能夠檢測串片段,並將它們分配到正確的屬性。我知道這不可能100%完美,但我希望儘可能接近。下面是我的做法至今: OCR驗證使用Rails構建一個名片掃描儀
- 我通過jQuery的
navigator.mediaDevices
- 我掃描的圖像發送到第三方API服務,稱爲OCRSpace(https://github.com/suyesh/ocr_space寶石可以在這裏)掃描名片然後得到識別的文本片段的格式化陣列後面,例如:
result = [['John Doe'], ['+49 160 123456'], ['Mainstr. 45a'], ['12345 Berlin'], ['CEO'], ['[email protected]'], ['www.business-website.de']]
我然後通過陣列迭代並做一些檢查,例如
使用
people
庫(https://github.com/mericson/people) 分裂在名字和姓氏(附加標題 或middlenames)名稱使用phonelib
庫 (https://github.com/daddyz/phonelib)查找有效的電話號碼 和國際化字符串- 格式化做上的電子郵件地址的正則表達式的基本檢查,並將其存儲
我現在懷念的是:
- 我怎麼能找出什麼名字字符串將可能是什麼?現在我讓用戶選擇它(在我的例子中,他將「John Doe」定義爲名稱,然後該庫執行其餘的部分)。我確定當使用正則表達式的時候會遇到衝突,像「Main Street」這樣的字符串也會被識別爲一個名字?
- 怎樣的正則表達式的郵政編碼和城市名稱的組合?我不是正則表達式專家,你知道任何有用的好消息嗎?目前找不到任何東西,除了一般的正則表達式檢查器。
一般:你喜歡我的做法還是這樣太複雜?你知道一些看起來更好的最佳做法嗎?
謝謝。我已經寫了一些正則表達式,例如'''[0-9] {5}(\ s)[A-Za-zäüö\ s。] {3,20}'''對於zip + city組合來說是個不錯的選擇。但tesseract我不會推薦。我已經嘗試過了,它不是很堅固。我寧願使用新的谷歌雲服務。 – DonMB
好的,很久以前我測試過tesseract,我建議它是因爲它是本地的而不是你依賴的服務(並且不是免費的)? – peter