1. 程式人生 > >一個小應用與機器學習

一個小應用與機器學習

要不要去“佔坑”機器學習

對於我這樣一個技術人來說,一項火熱的技術,有一種由衷的熱愛。但理性讓我思考,這是不是泡沫,其本質是什麼,我要不要投入生命中最為寶貴之一的時間去學習…這些問題,我必須回答自己。 首先,機器學習是AI的一個分支,作為創造者的人來說,機器擁有智慧是多麼讓人激動的事情; 其次,機器學習是一類演算法,一種被稱為“學習演算法”,在計算機領域(或者其他)對演算法的研究始終是永恆的話題; 再者,當今人類活動速度之快,我認為急需要一種較為智慧的機器來做更多一些繁瑣、不是那麼簡單的事情,解放部分人; 故而,機器學習勢必會成為一種趨勢,發揮它的力量;而自己有必要為將來積蓄一定力量,應用該技術來解決些事情。

一個小應用解決的事情

原由

有人給了pdf的電子掃描檔案,大概有5、6百也,主要內容是一些條款項。結果是要將上面的文字條款提取出來錄入資料庫中儲存起來,由應用系統統一管理;

分析

一種方式是讓人抄錄上面的文字,叫幾個人,十天半個月也能搞定,這麼做得人,我必須佩服呀! 一種是採用某種技術來處理,比如把掃描文件每一頁變為一張圖片,然後從圖片上提取文字資訊,這也是我選擇的方式。

具體實現

package identi;

import net.sourceforge.tess4j.Tesseract; import net.sourceforge.tess4j.TesseractException;

/**

  • Created with IntelliJ IDEA.

  • 圖片畫素越高,那麼圖片識別度越好。 */ public class IDentifi {

    public static void main(String[] args) { int count = 162; String result = “”; File file = new File(“D:\png\file.txt”); long start = System.currentTimeMillis(); for (int i = 0; i < count; i++) { File imageFile; if (i < 10) {//根據圖片名稱規律處理 imageFile = new File(“D:\png\14114106\14114106_0” + i + “.png”); } else { imageFile = new File(“D:\png\14114106\14114106_” + i + “.png”); } if (!imageFile.exists()) { break; } Tesseract instance = new Tesseract(); //設定訓練庫的位置 instance.setDatapath(“D:\shibie\src\main\resources\tessdata”); //中文識別 instance.setLanguage(“chi_sim”); try { result = instance.doOCR(imageFile); } catch (TesseractException e) { e.printStackTrace(); } try { //追加文字模式 FileWriter fileWriter = new FileWriter(file, true); fileWriter.write(result); fileWriter.write("***********************************************************\r\n"); fileWriter.close(); } catch (Exception e) { e.printStackTrace(); } } long end = System.currentTimeMillis(); System.out.println("--------共耗時:----------" + (end - start) / 1000); } }

maven依賴: net.sourceforge.tess4j tess4j 4.0.2 net.sourceforge.jexcelapi jxl 2.6.12

總結