一个小应用与机器学习

要不要去“占坑”机器学习

对于我这样一个技术人来说,一项火热的技术,有一种由衷的热爱。但理性让我思考,这是不是泡沫,其本质是什么,我要不要投入生命中最为宝贵之一的时间去学习…这些问题,我必须回答自己。
首先,机器学习是AI的一个分支,作为创造者的人来说,机器拥有智能是多么让人激动的事情;
其次,机器学习是一类算法,一种被称为“学习算法”,在计算机领域(或者其他)对算法的研究始终是永恒的话题;
再者,当今人类活动速度之快,我认为急需要一种较为智慧的机器来做更多一些繁琐、不是那么简单的事情,解放部分人;
故而,机器学习势必会成为一种趋势,发挥它的力量;而自己有必要为将来积蓄一定力量,应用该技术来解决些事情。

一个小应用解决的事情

原由

有人给了pdf的电子扫描文件,大概有5、6百也,主要内容是一些条款项。结果是要将上面的文字条款提取出来录入数据库中保存起来,由应用系统统一管理;

分析

一种方式是让人抄录上面的文字,叫几个人,十天半个月也能搞定,这么做得人,我必须佩服呀!
一种是采用某种技术来处理,比如把扫描文档每一页变为一张图片,然后从图片上提取文字信息,这也是我选择的方式。

具体实现

package identi;

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

import java.io.*;

/**

  • 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

总结

ocr技术原理
研究了一下Java OCR技术,在Google上找到了tesseract-ocr,最后找到了其对应的Java API版本 Tess4J;
https://blog.csdn.net/marketadviser/article/details/36626571
https://www.jianshu.com/p/921c1da740b5

猜你喜欢

转载自blog.csdn.net/u012260999/article/details/82821603