第28章 驗證碼識別
一周後。
星城數據服務有限公司迎來了三個新人
周毅、李偉和王超。
三個背著雙肩包,臉上還帶著學生氣的年輕人,站在破舊的辦公室里,有些手足無措。
他們的到來,讓這個草台班子終於有了點「公司「的樣子。
像三個新的齒輪,被扔進了陳陽這台勉強拼湊起來的機器里
陳陽沒興趣畫餅,時間寶貴。
他直接把維護和擴展爬蟲系統的任務扔給了他們。
「我們的目標是採集網際網路上的各類數據。「
「名著百科、社交媒體、新聞……能抓的全抓回來。「
陳陽指著一台顯示器上簡陋的監控界面,語氣平淡,像是在布置一項平平無奇的作業。
「明白。「
幾人點點頭。
眼神里還帶著茫然和一絲疑慮。
一個剛高考完的……老闆?這爬蟲系統……能用?
但當他們接觸到陳陽代碼後,所有疑慮都煙消雲散。
分布式調度、反爬策略、增量更新、斷點續傳……
雖然簡陋,但架構清晰,邏輯嚴謹,完全是奔著工業級應用去的。
周毅,三人中看起來經驗最豐富的一個,忍不住開口,聲音有點發乾:
「陳總……這、這代碼……您寫的?「
「嗯。「
陳陽頭也沒抬,繼續敲著自己的代碼。
對他而言,這不過是「前世」中無數次重複勞動後留下的肌肉記憶。
三人互相看了看,眼中的驚疑變成了某種敬畏。
也許,這個年輕得過分的老闆,真有點東西?
公司機器開始運轉。
五台二手伺服器發出低沉的嗡鳴,24小時不間斷。
爬蟲在網絡世界裡默默爬行,數據像細流一樣匯入硬碟。
第一天,採集了50萬條數據。
第二天,採集了120萬條。
數據在增長,但低於內部預期。問題如期而至。
第三天下午,周毅幾人拿著一份簡報,表情凝重地找到陳陽。
「陳總,驗證碼識別模塊拖後腿了。」
他指著監控面板上大片的紅色失敗記錄,
「我們用的那個開源OCR庫,標稱準確率80%,實際跑起來干擾太大,很多任務反覆失敗,整體效率比預計慢了至少30%。」
李偉補充:「複雜點的驗證碼,重試五六次都過不去,IP都可能被封。」
「而且,不少網站在升級驗證碼,難度還在增加。我估計……再過一兩周,成功率可能掉到70%以下。」
辦公室里一片沉默,只有伺服器風扇的噪音。
80%準確率……陳陽心裡毫無波瀾。
這本就在他預料之中。
他從一開始就知道,這個開源OCR只是個臨時湊數的玩意兒。
周毅還在那裡小心翼翼地建議:「陳總,要不……我試試優化一下算法?我之前看過一些論文,說是可以用SVM分類器……「
「不用。「陳陽打斷他,語氣很平靜,
「那條路是死的。傳統圖像處理的天花板太低,投入產出比極差。浪費時間。」
「那……」
周毅不知所措:「我們怎麼辦?」
陳陽沒有立刻回答,轉過身,看著窗外。
手指無意識地敲擊桌面。
確認著下一步計劃的時間節點。
卷積神經網絡的核心代碼他早已寫好。
GPU並行計算的思路也已成竹在胸。
陳陽轉回身,看著三個等待指令的員工,
「我這邊新的識別引擎已經基本完成,需要幾天時間進行最終的部署、優化和接口封裝。」
他的語氣篤定。
「幾天後,準確率會穩定在98%以上。」
「98%?!「
三人同時愣住,雖然知道老闆厲害,但這跨度……也太嚇人了!
周毅結結巴巴地問:「陳、陳總……您是說……您在開發新的算法?」
「嗯。「
陳陽點點頭,
「全新的算法。差不多快好了。」
「那我們……「
李偉問道,「需要幫您做什麼嗎?」
「收集驗證碼圖片。」
陳陽下達指令,
「種類越多越好,數量越多越好。」
「這是新引擎最後的『磨刀石』。」
當天晚上,辦公室只剩下陳陽和王磊。
「磊子,明天跟我去電腦城。」
陳陽看著還在整理數據的王磊。
「去、去幹嘛?「
「買顯卡。「
「顯卡?「
王磊愣住,
「買那玩意幹嘛?打遊戲?」
「運行新算法。「
陳陽言簡意賅,「接下來的算法,需要用GPU來跑。而且……」
他頓了頓:
「我們的驗證碼識別服務,馬上要對外開放了。需要搭建初步的計算集群」
「這麼快可以對外賣了?」
王磊驚訝,這才過去幾天呀。
「對。「陳陽點點頭。
「那……「王磊想到一個問題,猶豫了一下擔憂的問道:
「我聽周毅他們說,我們的驗證碼準確率才80%,能賣出去嗎?「
「所以要升級。「
陳陽看著他,眼中閃爍著自信的光芒,
「一周。一周後,我們的服務上線,準確率98%。到時候……「
「市場上,沒人能打得過我們。「
第二天,電腦城
陳陽的目標很明確——顯卡。
而且是當時市面上能買到的、計算能力最強的遊戲顯卡。
「老闆,NVIDIA的GTX 680,有現貨嗎?「
「GTX 680?!「老闆打量著這個年輕得過分的買家,
「哥們,這可是卡皇,四千多一塊,你確定要?「
「來四塊。「
陳陽掏出銀行卡。
一萬六千多塊,就這樣砸在了四塊遊戲顯卡上。
王磊看得心驚肉跳:「陽哥……一次買這麼多?「
「嗯。「陳陽接過沉甸甸的顯卡盒子,
「先搭個四卡並行的小集群,把服務跑起來,驗證多卡調度的框架。「
這是基礎。
王磊聽得似懂非懂,不明覺厲,只能默默地幫著搬運。
回到辦公室,陳陽立刻動手將這四塊嶄新的「卡皇「裝進了他預留的一台高配伺服器機箱裡。
他對旁邊圍觀的王磊和周毅等人簡單解釋了一下。
「新算法吃算力,CPU幹不了這活,必須上GPU。「
然後,轉身走進了那間隔出來的小小的「總經理辦公室」,反手關上了門。
「接下來三天,接口封裝和性能優化。」
陳陽的聲音從門後傳來。
「周毅你們開發一套對API計費的功能,按次數收費。給你們3天時間,有問題可以隨時問我「
陳陽回頭看了一眼三人:
「好。」
眾人下意識地應道。
辦公室里,只剩下鍵盤敲擊的聲音。
接下來的三天,對陳陽而言,是高強度的bug修復。
他幾乎沒有合眼,但目標明確,思路清晰。
沒有現成的深度學習框架。
沒有好用的GPU計算庫。
一切都從零開始,雖然這段時間功能基本都已經開發好了,但實際運行起來卻遇到了各種兼容問題。
不過好在很多東西都已經提前在腦海中預想過好了。
當第四天清晨,小辦公室里傳出四塊顯卡風扇發出低沉的轟鳴聲時
陳陽靠在椅背上,重重地吐出一口氣。
屏幕上,驗證集的識別準確率,穩定在了98.7%,單張圖片處理時間低於200毫秒.
成了。
當陳陽推開門走出來時,眼眶微微凹陷,下巴上冒出了青色的胡茬。
但那雙眼睛,卻出奇地明亮。
外面,周毅三人立刻圍了上來,臉上帶著期待和忐忑。
陳陽沒有說話,只是將一份列印好的、只有一頁紙的文檔遞給了周毅。
「這是新的驗證碼識別接口文檔。「
他的聲音沙啞,帶著疲憊,卻難掩興奮:
「替換掉舊的OCR模塊。按文檔調用。「
周毅半信半疑地接過,看著那簡單的函數簽名。
就這?
他坐到電腦前,修改代碼,替換。
然後,深吸一口氣。
重啟服務。
下一秒。
屏幕上,原本密密麻麻的紅色錯誤日誌,瞬間消失得無影無蹤!
取而代之的,是一片片代表著識別成功的綠色提示!
爬蟲任務如同脫韁的野馬,以之前數倍的速度,瘋狂地吞噬著目標網站的數據!
那些曾經卡住任務、需要反覆重試的驗證碼……
在這個神秘的函數調用面前,脆弱得如同虛設!
「通……通了!全都通了!「
李偉第一個跳起來。
王超看著日誌,手都在抖。
「準確率……這、這他媽接近100%了!」
周毅僵在那裡,反覆刷新著面板,感覺像是在做夢。
三人齊刷刷地看向陳陽,眼神里除了震驚,更多的是敬畏。
「陳……陳總。「
周毅的聲音帶著一絲敬畏:「您……您這是怎麼做到的?「
陳陽笑了笑,走到窗邊,看著外面開始喧囂的城市。
「一點技術突破而已。「
他轉過身,看著已經徹底被鎮住的三人,語氣平淡。
「驗證碼的問題解決了。計費功能怎麼樣了「
他看下周毅。
「已經開發好了,按照你的這邊的要求,我來給你演示下」
周毅看著陳陽解答道,隨後坐在自己的電腦前開始給身後的眾人演示。
看著沒什麼大問題的計費功能,陳陽嘴角微揚起,
「那就準備對外開放服務了。「
陳陽把沈清雪叫到了辦公室,他遞給她一份草擬的定價方案。
「驗證碼識別服務,API接口,按次收費。看看這個定價。」
沈清雪接過,看了一眼。
「陳陽,你是說……把驗證碼識別賣給別人?」
「對。「
陳陽點點頭:「這是我們的賺錢方式。」
「可是……「沈清雪猶豫了一下。
「會有人買嗎?」
「會。「陳陽很篤定,
「市面上的OCR服務,準確率只有八九成不到。我們是98%。「
他頓了頓:
「這不是選擇題,是必答題。剛需。」
沈清雪的眼睛慢慢亮了起來。
「你是說……那些需要大規模採集數據的公司?「
「對。「陳陽說,
「電商分析、市場調研、輿情監控……他們每天都在跟驗證碼死磕。低準確率的成本,他們比誰都清楚。「
「而我們98%準確率……「
他看著沈清雪,笑了:
「是降維打擊。「
沈清雪看著陳陽,心臟再次不自覺地加速。
「那……「
她吸了口氣,
「什麼時候上線?「
「明天。「
陳陽的回答毫不拖泥不帶水,
「API接口今晚部署到伺服器。明天就掛到論壇,開始先讓他們體驗下。「
「這麼快?「
「嗯。「
陳陽點點頭,
「市場窗口期很短。必須搶占先機。「
他看著窗外的天色:
「儘快把名聲打出去,把現金流做起來。你這邊去準備下企業打款以及發票的事情「
沈清雪看著陳陽那副篤定的樣子,也笑了。
「好。我現在就去完善方案,準備合同模板。「
她站起身,走到門口時,又停下腳步,回頭:
「陳陽。「
「嗯?「
「你……從一開始就計劃好了,對吧?「
沈清雪看著他。
陳陽看著她,沒有否認,只是淡淡地笑了笑。
「算是吧。「
「你……「沈清雪看著陳陽,再次感到心悸。
「怎麼了?「陳陽問道。
「沒什麼。「
沈清雪搖搖頭,掩去震驚,露出笑容,
「只是覺得……跟著你創業,好像挺有意思的。「
說完她轉身離開。
星城數據服務有限公司迎來了三個新人
周毅、李偉和王超。
三個背著雙肩包,臉上還帶著學生氣的年輕人,站在破舊的辦公室里,有些手足無措。
他們的到來,讓這個草台班子終於有了點「公司「的樣子。
像三個新的齒輪,被扔進了陳陽這台勉強拼湊起來的機器里
陳陽沒興趣畫餅,時間寶貴。
他直接把維護和擴展爬蟲系統的任務扔給了他們。
「我們的目標是採集網際網路上的各類數據。「
「名著百科、社交媒體、新聞……能抓的全抓回來。「
陳陽指著一台顯示器上簡陋的監控界面,語氣平淡,像是在布置一項平平無奇的作業。
「明白。「
幾人點點頭。
眼神里還帶著茫然和一絲疑慮。
一個剛高考完的……老闆?這爬蟲系統……能用?
但當他們接觸到陳陽代碼後,所有疑慮都煙消雲散。
分布式調度、反爬策略、增量更新、斷點續傳……
雖然簡陋,但架構清晰,邏輯嚴謹,完全是奔著工業級應用去的。
周毅,三人中看起來經驗最豐富的一個,忍不住開口,聲音有點發乾:
「陳總……這、這代碼……您寫的?「
「嗯。「
陳陽頭也沒抬,繼續敲著自己的代碼。
對他而言,這不過是「前世」中無數次重複勞動後留下的肌肉記憶。
三人互相看了看,眼中的驚疑變成了某種敬畏。
也許,這個年輕得過分的老闆,真有點東西?
公司機器開始運轉。
五台二手伺服器發出低沉的嗡鳴,24小時不間斷。
爬蟲在網絡世界裡默默爬行,數據像細流一樣匯入硬碟。
第一天,採集了50萬條數據。
第二天,採集了120萬條。
數據在增長,但低於內部預期。問題如期而至。
第三天下午,周毅幾人拿著一份簡報,表情凝重地找到陳陽。
「陳總,驗證碼識別模塊拖後腿了。」
他指著監控面板上大片的紅色失敗記錄,
「我們用的那個開源OCR庫,標稱準確率80%,實際跑起來干擾太大,很多任務反覆失敗,整體效率比預計慢了至少30%。」
李偉補充:「複雜點的驗證碼,重試五六次都過不去,IP都可能被封。」
「而且,不少網站在升級驗證碼,難度還在增加。我估計……再過一兩周,成功率可能掉到70%以下。」
辦公室里一片沉默,只有伺服器風扇的噪音。
80%準確率……陳陽心裡毫無波瀾。
這本就在他預料之中。
他從一開始就知道,這個開源OCR只是個臨時湊數的玩意兒。
周毅還在那裡小心翼翼地建議:「陳總,要不……我試試優化一下算法?我之前看過一些論文,說是可以用SVM分類器……「
「不用。「陳陽打斷他,語氣很平靜,
「那條路是死的。傳統圖像處理的天花板太低,投入產出比極差。浪費時間。」
「那……」
周毅不知所措:「我們怎麼辦?」
陳陽沒有立刻回答,轉過身,看著窗外。
手指無意識地敲擊桌面。
確認著下一步計劃的時間節點。
卷積神經網絡的核心代碼他早已寫好。
GPU並行計算的思路也已成竹在胸。
陳陽轉回身,看著三個等待指令的員工,
「我這邊新的識別引擎已經基本完成,需要幾天時間進行最終的部署、優化和接口封裝。」
他的語氣篤定。
「幾天後,準確率會穩定在98%以上。」
「98%?!「
三人同時愣住,雖然知道老闆厲害,但這跨度……也太嚇人了!
周毅結結巴巴地問:「陳、陳總……您是說……您在開發新的算法?」
「嗯。「
陳陽點點頭,
「全新的算法。差不多快好了。」
「那我們……「
李偉問道,「需要幫您做什麼嗎?」
「收集驗證碼圖片。」
陳陽下達指令,
「種類越多越好,數量越多越好。」
「這是新引擎最後的『磨刀石』。」
當天晚上,辦公室只剩下陳陽和王磊。
「磊子,明天跟我去電腦城。」
陳陽看著還在整理數據的王磊。
「去、去幹嘛?「
「買顯卡。「
「顯卡?「
王磊愣住,
「買那玩意幹嘛?打遊戲?」
「運行新算法。「
陳陽言簡意賅,「接下來的算法,需要用GPU來跑。而且……」
他頓了頓:
「我們的驗證碼識別服務,馬上要對外開放了。需要搭建初步的計算集群」
「這麼快可以對外賣了?」
王磊驚訝,這才過去幾天呀。
「對。「陳陽點點頭。
「那……「王磊想到一個問題,猶豫了一下擔憂的問道:
「我聽周毅他們說,我們的驗證碼準確率才80%,能賣出去嗎?「
「所以要升級。「
陳陽看著他,眼中閃爍著自信的光芒,
「一周。一周後,我們的服務上線,準確率98%。到時候……「
「市場上,沒人能打得過我們。「
第二天,電腦城
陳陽的目標很明確——顯卡。
而且是當時市面上能買到的、計算能力最強的遊戲顯卡。
「老闆,NVIDIA的GTX 680,有現貨嗎?「
「GTX 680?!「老闆打量著這個年輕得過分的買家,
「哥們,這可是卡皇,四千多一塊,你確定要?「
「來四塊。「
陳陽掏出銀行卡。
一萬六千多塊,就這樣砸在了四塊遊戲顯卡上。
王磊看得心驚肉跳:「陽哥……一次買這麼多?「
「嗯。「陳陽接過沉甸甸的顯卡盒子,
「先搭個四卡並行的小集群,把服務跑起來,驗證多卡調度的框架。「
這是基礎。
王磊聽得似懂非懂,不明覺厲,只能默默地幫著搬運。
回到辦公室,陳陽立刻動手將這四塊嶄新的「卡皇「裝進了他預留的一台高配伺服器機箱裡。
他對旁邊圍觀的王磊和周毅等人簡單解釋了一下。
「新算法吃算力,CPU幹不了這活,必須上GPU。「
然後,轉身走進了那間隔出來的小小的「總經理辦公室」,反手關上了門。
「接下來三天,接口封裝和性能優化。」
陳陽的聲音從門後傳來。
「周毅你們開發一套對API計費的功能,按次數收費。給你們3天時間,有問題可以隨時問我「
陳陽回頭看了一眼三人:
「好。」
眾人下意識地應道。
辦公室里,只剩下鍵盤敲擊的聲音。
接下來的三天,對陳陽而言,是高強度的bug修復。
他幾乎沒有合眼,但目標明確,思路清晰。
沒有現成的深度學習框架。
沒有好用的GPU計算庫。
一切都從零開始,雖然這段時間功能基本都已經開發好了,但實際運行起來卻遇到了各種兼容問題。
不過好在很多東西都已經提前在腦海中預想過好了。
當第四天清晨,小辦公室里傳出四塊顯卡風扇發出低沉的轟鳴聲時
陳陽靠在椅背上,重重地吐出一口氣。
屏幕上,驗證集的識別準確率,穩定在了98.7%,單張圖片處理時間低於200毫秒.
成了。
當陳陽推開門走出來時,眼眶微微凹陷,下巴上冒出了青色的胡茬。
但那雙眼睛,卻出奇地明亮。
外面,周毅三人立刻圍了上來,臉上帶著期待和忐忑。
陳陽沒有說話,只是將一份列印好的、只有一頁紙的文檔遞給了周毅。
「這是新的驗證碼識別接口文檔。「
他的聲音沙啞,帶著疲憊,卻難掩興奮:
「替換掉舊的OCR模塊。按文檔調用。「
周毅半信半疑地接過,看著那簡單的函數簽名。
就這?
他坐到電腦前,修改代碼,替換。
然後,深吸一口氣。
重啟服務。
下一秒。
屏幕上,原本密密麻麻的紅色錯誤日誌,瞬間消失得無影無蹤!
取而代之的,是一片片代表著識別成功的綠色提示!
爬蟲任務如同脫韁的野馬,以之前數倍的速度,瘋狂地吞噬著目標網站的數據!
那些曾經卡住任務、需要反覆重試的驗證碼……
在這個神秘的函數調用面前,脆弱得如同虛設!
「通……通了!全都通了!「
李偉第一個跳起來。
王超看著日誌,手都在抖。
「準確率……這、這他媽接近100%了!」
周毅僵在那裡,反覆刷新著面板,感覺像是在做夢。
三人齊刷刷地看向陳陽,眼神里除了震驚,更多的是敬畏。
「陳……陳總。「
周毅的聲音帶著一絲敬畏:「您……您這是怎麼做到的?「
陳陽笑了笑,走到窗邊,看著外面開始喧囂的城市。
「一點技術突破而已。「
他轉過身,看著已經徹底被鎮住的三人,語氣平淡。
「驗證碼的問題解決了。計費功能怎麼樣了「
他看下周毅。
「已經開發好了,按照你的這邊的要求,我來給你演示下」
周毅看著陳陽解答道,隨後坐在自己的電腦前開始給身後的眾人演示。
看著沒什麼大問題的計費功能,陳陽嘴角微揚起,
「那就準備對外開放服務了。「
陳陽把沈清雪叫到了辦公室,他遞給她一份草擬的定價方案。
「驗證碼識別服務,API接口,按次收費。看看這個定價。」
沈清雪接過,看了一眼。
「陳陽,你是說……把驗證碼識別賣給別人?」
「對。「
陳陽點點頭:「這是我們的賺錢方式。」
「可是……「沈清雪猶豫了一下。
「會有人買嗎?」
「會。「陳陽很篤定,
「市面上的OCR服務,準確率只有八九成不到。我們是98%。「
他頓了頓:
「這不是選擇題,是必答題。剛需。」
沈清雪的眼睛慢慢亮了起來。
「你是說……那些需要大規模採集數據的公司?「
「對。「陳陽說,
「電商分析、市場調研、輿情監控……他們每天都在跟驗證碼死磕。低準確率的成本,他們比誰都清楚。「
「而我們98%準確率……「
他看著沈清雪,笑了:
「是降維打擊。「
沈清雪看著陳陽,心臟再次不自覺地加速。
「那……「
她吸了口氣,
「什麼時候上線?「
「明天。「
陳陽的回答毫不拖泥不帶水,
「API接口今晚部署到伺服器。明天就掛到論壇,開始先讓他們體驗下。「
「這麼快?「
「嗯。「
陳陽點點頭,
「市場窗口期很短。必須搶占先機。「
他看著窗外的天色:
「儘快把名聲打出去,把現金流做起來。你這邊去準備下企業打款以及發票的事情「
沈清雪看著陳陽那副篤定的樣子,也笑了。
「好。我現在就去完善方案,準備合同模板。「
她站起身,走到門口時,又停下腳步,回頭:
「陳陽。「
「嗯?「
「你……從一開始就計劃好了,對吧?「
沈清雪看著他。
陳陽看著她,沒有否認,只是淡淡地笑了笑。
「算是吧。「
「你……「沈清雪看著陳陽,再次感到心悸。
「怎麼了?「陳陽問道。
「沒什麼。「
沈清雪搖搖頭,掩去震驚,露出笑容,
「只是覺得……跟著你創業,好像挺有意思的。「
說完她轉身離開。