在这次应用软件设计课程中,要求从今年的软件杯大赛上的项目选择一个实现。我选的是"网店工商信息提取",具体要求就是:从给出的带水印的图片中提取出企业名称和企业注册号,并根据这些信息生成excel表格。
刚刚开始以为这个要求挺难实现的,图片识别好像是很高深的技术啊。但是认真做起来从开工到完成也没花多少时间,并不是我完成了图片识别的代码,而是我用到了谷歌一个图片识别的源码包(TESS4J)。其实不止是图片识别这部分,生成excel表也是用的第三方源码包(感觉好方便)。早知道这么容易,后悔没有报名软件杯。。。
这样,项目四个模块的功能(水印处理、图片识别、信息提取、生成excel表)我自己实现的其实只有信息提取和水印处理。虽然如此,还是有必要记录一下。
下面上代码:
首先是主函数RP.java:
import java.awt.Rectangle;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import net.sourceforge.tess4j.*;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.xssf.usermodel.*;
public class RP {
private String a0="无法识别",c0="无法识别";
public void PickUp(String s) //提取文字中的公司名和注册号
{
int c1=-1,c2=-1;
c1=s.lastIndexOf("号 :");
c2=s.indexOf("\n");
if(c1!=-1&&c2!=-1)
{
c0=s.substring(c1+4, c2);
}
int a1=-1,a2=-1;
a1=s.indexOf("称 :");
a2=s.lastIndexOf("\n");
if(a1!=-1&&a2!=-1)
{
a0=s.substring(a1+4, a2);
}
/* else{
int b1=s.indexOf("名称:");
int b2=s.lastIndexOf("有限公司");
if(b1!=-1)
{
b0=s.substring(b1+3, b2+2);
}
}*/
}
public void toExcel(int i,XSSFWorkbook wb,XSSFSheet sheet) //将文字信息做成表格
{
if(i==0) //第一行的话,就设置列名等属性
{
XSSFRow row=sheet.createRow(0);
XSSFCellStyle style=(XSSFCellStyle)wb.createCellStyle();
style.setAlignment(HorizontalAlignment.CENTER);
XSSFCell cell=row.createCell(0);
cell.setCellValue("企业名称");
cell.setCellStyle(style);
cell = row.createCell(1);
cell.setCellValue("企业注册号");
cell.