package com.binge.entity;
import java.io.Serializable;
import java.util.List;
public class User implements Serializable{
private static final long serialVersionUID = 707985171749658644L;
private Long id;
private String name;
private List<String> friends;
public User() {
}
public User(Long id, String name, List<String> friends) {
this.id = id;
this.name = name;
this.friends = friends;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public List<String> getFriends() {
return friends;
}
public void setFriends(List<String> friends) {
this.friends = friends;
}
}
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.10</version>
<scope>provided</scope> <!--声明周期为编译,打包的时候jar包不会打入目标包中-->
</dependency>
package com.binge.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
import java.util.List;
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User implements Serializable {
private static final long serialVersionUID = 707985171749658644L;
private Long id;
private String name;
private List<String> friends;
}
C/C++/C#, Java, Python, Ruby, Go ...*nix和mac平台了!<dependencies>
<dependency>
<groupId>net.sourceforge.tess4j</groupId>
<artifactId>tess4j</artifactId>
<version>3.2.1</version>
</dependency>
<dependency>
<groupId>com.sun.media.imageio</groupId>
<artifactId>jai_imageio</artifactId>
<version>1.0_01</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/jai_imageio.jar</systemPath>
</dependency>
</dependencies>
tess4j-3.2.1.jar包,找到tessdata文件夹:


package com.binge;
import net.sourceforge.tess4j.ITesseract;
import net.sourceforge.tess4j.Tesseract;
import net.sourceforge.tess4j.util.LoadLibs;
import java.io.File;
public class App {
public static void main(String[] args) throws Exception {
// String fileName = "abc.tif";
// String fileName = "eurotext.tif";
// String fileName = "phototest.tif";
String fileName = "chi.tif";
File img = new File(App.class.getClassLoader().getResource(fileName).getPath());
ITesseract iTesseract = new Tesseract();
// iTesseract.setLanguage("eng");
iTesseract.setLanguage("chi_sim");
iTesseract.setDatapath(LoadLibs.extractTessResources("tessdata").getAbsolutePath());
System.out.println(iTesseract.doOCR(img));
}
}




pdf转图片主要有以下几种方式:
/**
* Converts PDF to PNG format.
*
* @param inputPdfFile input file
* @return an array of PNG images
*/
public static File[] convertPdf2Png(File inputPdfFile) {
File imageDir = inputPdfFile.getParentFile();
if (imageDir == null) {
String userDir = System.getProperty("user.dir");
imageDir = new File(userDir);
}
//get Ghostscript instance
Ghostscript gs = Ghostscript.getInstance();
//prepare Ghostscript interpreter parameters
//refer to Ghostscript documentation for parameter usage
List<String> gsArgs = new ArrayList<String>();
gsArgs.add("-gs");
gsArgs.add("-dNOPAUSE");
gsArgs.add("-dQUIET");
gsArgs.add("-dBATCH");
gsArgs.add("-dSAFER");
gsArgs.add("-sDEVICE=pnggray");
gsArgs.add("-r300");//DPI
gsArgs.add("-dGraphicsAlphaBits=4");
gsArgs.add("-dTextAlphaBits=4");
gsArgs.add("-sOutputFile=" + imageDir.getPath() + "/workingimage%03d.png");
gsArgs.add(inputPdfFile.getPath());
//execute and exit interpreter
try {
synchronized (gs) {
gs.initialize(gsArgs.toArray(new String[0]));
gs.exit();
}
} catch (GhostscriptException e) {
logger.error(e.getCause().toString(), e);
} finally {
//delete interpreter instance (safer)
try {
Ghostscript.deleteInstance();
} catch (GhostscriptException e) {
//nothing
}
}
// find working files
File[] workingFiles = imageDir.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
return name.toLowerCase().matches("workingimage\\d{3}\\.png$");
}
});
Arrays.sort(workingFiles, new Comparator<File>() {
@Override
public int compare(File f1, File f2) {
return f1.getName().compareTo(f2.getName());
}
});
return workingFiles;
}
直接上示例:
private String name;
private int age;
private List<String> friends;
public Foo setName(String name) {
this.name = name;
return this;
}
public Foo setAge(int age) {
this.age = age;
return this;
}
public Foo setFriends(List<String> friends) {
this.friends = friends;
return this;
}
好处:
Foo foo = new Foo();
foo.setName("Tom")
.setAge(25)
.setFriends(Lists.newArrayList("Jack", "Lily"));