官术网_书友最值得收藏!

螞蟻雄兵,碼農的第一次戰役

2004年,政府無紙化辦公推進得如火如荼,電子公文替代傳統公文,尤其是替代傳輸通道變得非常迫切。數字化的便利和網絡跨時空的特性,利于提升行政管理能力和管理效率。電子公文要具備唯一性、完整性,不可篡改、不可否認,此外它的權威性也需要得到確認。無疑,在IT環境下文件的傳播路徑和訪問審計很容易追蹤訪問者的身份。但是,如果電子公文打印出來,紙質紅頭文件泄露出去,標記信息復印中被遮擋,怎樣追查紙質文件的來源?

不僅政府機關,就連企業也經常碰到類似問題,尤其一些大型企業,如果合同泄露,設計圖紙泄露,往往造成不可預估的損失。這一年,我們收到了來自政府核心機構的需求,希望我們能夠解決對分發出去的紙質文件的溯源追蹤問題,從分發出去的幾十份甚至上千份文件中確定泄露源頭。那時候,我任職公司開發一部經理,管著公司最核心的代碼,沒有什么懸念,這個任務老板拍在了我的頭上。

一籌莫展,怎么開展呢?

經過內部一番頭腦風暴,大家提出了三個方案。

方案一:文檔背景中嵌入稀疏點陣,點陣不招人眼,甚至肉眼看上去很難注意,取得泄露樣本后對紙張點陣進行識別。由于點陣數量可以很多,這樣就可以對特征值進行較多的重復信息的嵌入,更有利于識別。

方案二:使用二維碼做標記,將分發標志或者收件人加密后嵌入其中,獲得樣本后識別解密。

方案三:利用行間距或者字間距的微小差別,隱藏分發標志或者收件人信息。

討論完就開始行動,我們立即對方案的可行性進行驗證開發,經過一系列的分析和技術驗證發現方案一和方案三看起來可行,但是復印后對嵌入信息破壞很大。方案一復印紅頭文件后不光點陣沒了,還多了一堆麻點,尤其對于舊式復印機,復印后直接“蒙娜麗莎”了——顆粒和條紋較多。方案三復印時如果紙張放斜了一點,有折痕或者揉搓之后,行間距和字間距則一片大亂,尤其行間距,因為一頁里面沒有幾行,能夠編碼的信息太少,更談不上冗余。方案二太容易實現,也太容易被遮擋。這可怎么辦?

我突然想起之前在做紙質文件數字化過程中,需要對識別文字進行編改校對,識別出來的文字一般都會提供10個,相似度最高的排在前面,識別引擎不會明示具體的某個字。如果我們對文字的關鍵筆畫做些修改,把原始的字放到樣本庫中,讓識別引擎去比較,是不是就可以達到我們的目標?我把討論結果和新的想法向老板匯報。老板當即回復:“這個方案靠譜,我馬上幫你聯系清華的老師?!彼又致撓盗酥锌圃鹤詣踊?,也是做模式識別的團隊。

2000年前后,有不少做圖像文字識別軟件的識別引擎來自清華。劉長松老師熱情地接待了我,了解了我們的需求后,他說:“從文字識別的角度來看,識別率要保持一定的水準。第一,特征要明顯;第二,樣本要豐富、足夠多。所謂樣本就是識別文字的各種變形后的狀態圖案。這個方案沒有做過,可以試試,前提是你們必須提交樣本文字用來訓練,然后提供要識別的紙質文件,測試之后才能評估?!?/p>

這說明方案具有可行性。時間緊急,回公司后我立即組織部門會議,把清華老師的要求介紹給大家?,F在需要解決的是變形哪些文字,這些文字怎么變形,怎樣制作樣本,以什么形式提供給清華老師。

討論后就進行了分工,有的同事從網上下載文章,篩選出1000個最常用的漢字,針對這1000個漢字進行局部修改。我們要尋找工具解讀字體文件,或者我們自己寫個程序能解讀字體文件,然后對1000個漢字進行筆畫上的微調。因為不能影響視覺和打印效果,我們就想辦法用變形后的文字編寫文檔并打印出來。首先,我們將實驗階段的漢字字數縮小到10個,必須驗證效果后再大規模推進。另外,有同事找到了字庫文字編輯軟件,這解決了我們修改字庫文字的問題,不用耗費精力讀取字庫,只需要寫個交互界面進行編輯調整。字庫被修改后,我們把操作系統中的字庫文件替換掉,這樣無論使用哪個文檔撰寫工具都可以直接修改成變形文字文件,我們使用4臺不同型號的打印機分別打印了樣本文件。趕緊送到清華進行評估,劉長松老師說第二天給我結果。

等待的時間是漫長的,內心是忐忑的,因為我們不知道結果怎樣,這個方案行不通的話,還有什么思路?

第二天上午9點多,劉老師給我打來電話:“通過樣本訓練后,對樣本的識別率大于99%,方案應該可行?!?/p>

非常感謝上天的眷顧!我們團隊聽后非常興奮,趕緊去跟老板匯報,并溝通下一步的工作。老板臉上帶著自信的微笑,好像早就料到了一樣,他說:“清華老師也跟我說了,就按這個方案開始干吧!需要什么資源,你直接給公司部門領導打電話,我一會兒給管理層群發郵件,要求他們無條件地配合你的工作。我還給你找了一個書法家,他也是某字庫公司的字體專家。另外,需要跟清華大學實驗室溝通商務,識別引擎和后臺數據庫我們需要,訓練工具我們也需要,要做到結果可控,隨時可以測試驗證?!?/p>

這是我在2004年之前接受的最復雜的一個項目,回到部門后我趕緊開會布置任務。

第一,確定兩種最常用的字體,拷貝出來進行編輯和變形。

第二,對公文系統進行改造,能夠通過變形文字嵌入信息,并可以進行冗余編碼,打印時將計算機標志信息和時間隱藏其中。

第三,開發識別工具。對于發現的泄露文件,能夠識別其中的隱藏信息,直接報告顯示電腦標志和時間信息。電腦標志信息用CPU編碼、網卡編碼還是硬盤編碼,自行決定。

第四,聯系數字化生產部,借調10名文字校對人員對字庫文件的文字進行修改;怎么修改,我們培訓,教會他們使用字體修改工具。

第五,尋找更多不同款的打印機,至少10種;尋找周邊復印店、打印店,準備復印。

第六,準備樣本制作環境,水泡、可樂泡、醬油泡,手工揉搓。

第七,準備4種不同型號的掃描儀,用來掃描樣本圖像,然后進行識別訓練。

第八,準備訓練環境。掃描后的圖像怎么進行自動化訓練,提供什么輸入等問題需要搞清楚。

第九,跟清華溝通商務問題,例如,識別引擎是否涉及定制開發。此外,我們還需要針對識別的訓練軟件,對同一個字的多種樣本進行學習訓練。

任務分派完,我們就開始行動了。跟清華大學實驗室的溝通由我親自上陣,我還和老板聯系了中科院自動化所、漢王公司,確保萬無一失。中午書法家趕過來后也給我們提供了有效的幫助。他說對于電腦,如果變化特征識別是一樣的,從視覺上看不應該修改關鍵筆畫,而是修改那些不起眼的筆畫,避免視覺上造成影響。我們及時采納了他的意見。

系統改造,測試驗證,10種打印機、10種復印機、4款掃描儀、4種破壞方式,從改程序到改字數有10個環節,樣本用復印機二次交叉復印,最后每個樣本數達到上千個。任何一個環節出錯,都會對結果造成致命影響。我們分工仔細,每個環節都有專人盯緊執行結果,最后用變形字體嵌入信息識別率平均可以達到95.6%,按清華劉長松老師的話,結果可用。我們用4天完成了這個任務,全程各項工作無縫銜接,高速運轉。

向政府核心部門技術領導做展示時,我們的技術方案獲得了高度認可。同時我們也得知,他們用另外一家業內知名企業也推進了同樣的項目,這家公司走了另外一條技術路線。這也讓我們學到了一點:關鍵項目或者技術攻關,在條件允許的情況下,應該開辟兩條路徑,確保目標達成和路徑最優。

如果要讓我數數自己工作上最引以為豪的事跡,這肯定算其中一個。組織工作復雜,需要大量調度(七八個部門參與,還有外部3家公司),工序繁多且每一個都容不得閃失(細數下來,超過20個環節);對外有依賴性和一定的不確定性;在總目標不變的情況下,工作過程中需要調整策略時,就及時處理。

“凡事預則立,不預則廢?!边@是我碼農史第一次跨部門組織大規模的團隊作戰。

主站蜘蛛池模板: 宜宾县| 丘北县| 汉阴县| 长顺县| 夏津县| 南平市| 恩施市| 柳江县| 九江市| 宜君县| 土默特右旗| 甘洛县| 乌兰浩特市| 黄龙县| 松原市| 尼勒克县| 秦皇岛市| 视频| 杂多县| 龙山县| 大足县| 石城县| 金秀| 延川县| 偏关县| 武隆县| 榆林市| 高邮市| 上林县| 大理市| 五寨县| 辛集市| 金门县| 同江市| 承德市| 灌阳县| 汶上县| 天门市| 醴陵市| 包头市| 册亨县|