Python+OpenCV提取公眾號(hào)文章閱讀數(shù)
周末大清早群友問我能否做個(gè)小功能——提取出公眾號(hào)文章閱讀數(shù)。呵呵,谷歌網(wǎng)站主頁光溜溜的,做起來也是個(gè)小功能吧。至于什么系統(tǒng)集成我也不多問了,別家公司的秘密不亂打聽,殺頭的。
初定采用圖像識(shí)別的方法,圖像文字提取有很多現(xiàn)成方案,而且還是顯示器上的文字提取,比車牌識(shí)別要簡單得多,就算不答應(yīng)他,我也想自己試試玩玩。
計(jì)劃幾天的工作量,沒打算在它身上廢太多功夫。一切的創(chuàng)新從拷貝開始,沒想到3小時(shí)就把功能實(shí)現(xiàn),接下來抽空上一點(diǎn)細(xì)節(jié),以及各種異常處理,畢竟要規(guī)避少量誤報(bào)的情況。
方案采用Python+OpenCV+OCR庫(Optical Character Recognition,光學(xué)字符識(shí)別),文稿下方視頻演示執(zhí)行效果。
友情提示,點(diǎn)擊視頻右側(cè)按鈕可以旋轉(zhuǎn)手機(jī)觀看,否則文字太小豎屏看不清
所用的OCR是離線數(shù)據(jù)包,網(wǎng)上看到有人用百度AI的OCR服務(wù),反正我不會(huì)考慮把核心功能放在大佬的服務(wù)器上跑的。
主席:飯碗任何時(shí)候都要牢牢端在自己手中。
簡要說說
PC端打開公眾號(hào)文章也是沒有閱讀數(shù)的,爬蟲也做不了。
我認(rèn)為是公眾號(hào)防止第三方抓取數(shù)據(jù),特意把“閱讀”字體顏色改得和背景色相近,在識(shí)別圖像時(shí)“閱讀”辨識(shí)成背景噪聲。
下面列出原始圖像的文字識(shí)別效果,不是太好。當(dāng)然,沒有那種圖像處理能少得了預(yù)處理的。
';', 'RRB', '“有一種贊賞叫催更,感謝你的肯定“', 'eo', 'ti', '|', '&', '>', 'ob', '8', '分享', 'ke', '2', '1', '人呵”瀘州考究官方旗艦店', '關(guān)注公眾號(hào)', '愛喝好酒的,進(jìn)來看看', '發(fā)消息']
我用畫圖把原始的灰色字體描繪成黑色,算是人工干預(yù)預(yù)處理。再次識(shí)別,“閱讀”數(shù)據(jù)成功提取出來。
下面是涂黑字體識(shí)別結(jié)果。
'“有一種贊賞叫催更,感謝你的肯', 'eo', 'ti', '|', '閱讀', '31', 'P', 'oO', 'o', '8B', '分享', '收藏', '2', '1', '人呵”瀘州考究官方旗艦店', '關(guān)注公眾號(hào)', '愛喝好酒的,進(jìn)來看看']
既然高對比度它有利于提高文字識(shí)別率,我就想辦法提高“閱讀”文字的對比度。首先用的是邊沿檢測方法,所有文字邊沿都描繪一個(gè)框。
本以為轉(zhuǎn)換成邊沿檢測識(shí)別效果會(huì)好起來,實(shí)際反而更差。猜測OCR庫不能識(shí)別“浮雕狀文字”,文字的邊框使得文字看起來更肥大,邊沿檢測后文字和背景色之間有個(gè)輪廓,只有特別粗的字體在邊沿檢測后不受影響。
瞧,小字體文字都識(shí)別成亂碼。
'”有一種贊賞叫催政,感謝你的肯定”', '稀罕作者', 'ia', 'io', 'ne', 'ae', 'me', ';', '1', 'See', 'ga', 'lel', 'Te', 'Be', 'mg', 'cD']
剔除背景色
微信文章默認(rèn)背景色都是白色,計(jì)劃把白色涂抹成其他顏色,其他非白色位置描黑。其實(shí)白色的判定不是絕對的白色,而是取出一定范圍的相對白色。下圖左側(cè)是取出的“蒙版”,除了要去除的背景色外,蒙版上其余顏色涂成黑色。蒙版的作用和Photoshop是一樣的。
如此一來整張圖片文字對比對就高多。
最終文字檢測結(jié)果。
'調(diào)用do_exit,文稿末尾我上貼圖;', '了', '2、如果某應(yīng)用程序在內(nèi)核空間死鎖,將永遠(yuǎn)', '不能控制GPIO', ',只能手動(dòng)強(qiáng)制關(guān)機(jī);', '吳解君', '“有一種贊賞叫催更,感謝你的上衣', '”', '中', '稀罕作者', '閱讀', '31', 'PrP', '@', 'o', '8', '分享', '收藏', '2', '1', 'GE', '瀘州老竄官方旗艦店', '、', 'g', 'BIRTH,', 'WEEE.', '關(guān)注公眾號(hào)', '發(fā)消息']
最后
天下老板都一樣,貌似對方老板為了接單同意客戶各種指標(biāo)要求,先把客戶套住再說,至于實(shí)現(xiàn)嘛,交給寫代碼的,碼農(nóng)Ctrl+C、Ctrl+V想盡辦法去圓老板的當(dāng)年吹下的牛逼。他手下碼農(nóng)頭快突了,搞不定原型機(jī),項(xiàng)目負(fù)責(zé)人到處找外協(xié)幫忙。
你們可知道外協(xié)其實(shí)也是到處Ctrl+C、Ctrl+V的嗎?哈哈。
問對方和客戶談指標(biāo)時(shí)下面做事的人有代表參加評審做可行性分析嗎?
項(xiàng)目負(fù)責(zé)人如此回我。
“評審會(huì),評什么?打工人,憑什么?”
鄙人臥槽評天下,閣下是個(gè)文化人。
真要說打工人憑什么,也不是真沒有:君子生非異也,善假于物也。
老板借員工的時(shí)間,員工借老板的資源。