tesseract-OCR 圖像識別插件 node-tesr 瞭解一下?

node

前言

該項目誕生於一次爬蟲事件,當時一時興起想把某租房網信息爬下來,前面進行的仍是挺順暢的,可是在租房價格信息上被擺了一道,房屋的價格信息爲一個數字圖片爲底加上偏移量來顯示的,和雪碧圖同樣的實現方式,固然,其中加上了一點小算法,具體以下。javascript

  • 獲取數字圖片信息和 offset 信息前端

    • 數字圖片
    • { "offset": [ [1, 4, 2, 8], [5, 1, 7, 8], [5, 1, 3, 8], ... ] }
  • 由 offset 信息加上一點算法得出 position 信息java

    • (background-position: xxx px)
  • 以數字圖片爲背景,加上偏移,append 到價格信息他應該在地方

略一思索,倒也不是什麼大事兒,只要加個識別的過程再輔以算法便可。node

在實行圖像識別的過程當中藉助到了 google 的開源軟件 tesseract-OCR,由於爬蟲環境是 node,遂寫了一個適用於 tesseract-OCR 最新版本的 node 插件,後續還添加了命令行使用的功能。git

演示

命令行使用 --- 1

cmd-line-1.jpg

命令行使用 --- 2

cmd-line-2.jpg

模塊使用 --- 1

module-1.jpg

項目在這裏

若是以爲我對你有幫助,不妨給我個 star 吧,蟹蟹~github

github node-tesr算法

正文

命令行使用

想要使用圖像識別首先要確保電腦中已經安裝了 tesseract-OCR 點擊下載npm

想要使用命令行建議全局安裝網絡

npm install node-tesr -g
tesr --from=./test/output.jpg --to=./output.txt

參數說明app

--from 須要識別的圖片路徑(必須)
--to 若傳入此參數會將識別的文字輸出到該文件下(非必須,默認會將識別內容輸出到命令行)
--l 識別語言,對中文稍微作了點處理,識別簡體 --l=chs,識別繁體 --l=cht(非必須,默認爲 eng)
--p 見 lib/config.js 裏的說明(非必須,默認爲 3 自動模式)
--o 見 lib/config.js 裏的說明(非必須,默認爲 3 自動模式)

模塊引入使用

npm install node-tesr
const tesseract = require('node-tesr')

tesseract('./output.jpg', { l: 'eng', oem: 3, psm: 3 }, function(err, data) {
  // 此處得到識別內容
  console.log(data)
})

// 或者以下也可
tesseract('./output.jpg', function(err, data) {
  // 此處得到識別內容
  console.log(data)
})

後語

效果

經測試效果仍是不錯的,可是有一點須要注意一下,上面提到該網站的數字圖片是透明底的,測試發現 tesseract-OCR 對透明底的彷佛無解,這個時候就須要結合一下 images 這個 node 插件

let images = require('images')
images(500, 100)
  .fill(0xff, 0xff, 0xff, 1)
  .draw(images('demo.png'), 10, 10)
  .save('output.jpg', {
    quality: 100
  })

將透明底填充爲白底便可正常識別

如何提升個人圖像識別準確率

老闆!個人圖像識別率很低怎麼破!

來,看這裏,這個能夠提升圖像識別率。

識別算法學習

待辦

  • 增長網絡地址圖片也可識別的功能
  • 使用 then 來處理回調

頁腳

代碼即人生,我甘之如飴。

我在這裏 gayhub@jsjzh 歡迎你們來找我玩兒。

歡迎小夥伴們直接加我,拉你進羣一塊兒學習前端呀,記得備註一下你來自哪裏哦。

wechat

wechat

相關文章
相關標籤/搜索