java识别图片文字
1. 用java编写一个程序识别图片上的文字
这种想法太疯狂了。。目前能实现辨别图片里的数字是正常的,辨别英文也有点难度,中文就更难了。。辨别图像里面的文字数字,不是想象的那么简单的,要从像素着手的,比较特定区域的像素,然后程序做出判断,程序实现起来还是比较复杂的
2. java 中用poi读取word和用docx4j读取word
不知道你是具体读取Word里面的什么元素,下面以读取文字和图片为例吧,两个代码示例,你参考看看:
读取文本
import com.spire.doc.Document;
import java.io.FileWriter;
import java.io.IOException;
public class ExtractText {
public static void main(String[] args) throws IOException {
//加载Word文档
Document document = new Document();
document.loadFromFile("C:\Users\Administrator\Desktop\sample.docx");
//获取文档中的文本保存为String
String text=document.getText();
//将String写入Txt文件
writeStringToTxt(text,"ExtractedText.txt");
}
public static void writeStringToTxt(String content, String txtFileName) throws IOException {
FileWriter fWriter= new FileWriter(txtFileName,true);
try {
fWriter.write(content);
}catch(IOException ex){
ex.printStackTrace();
}finally{
try{
fWriter.flush();
fWriter.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}}
2. 读取图片
import com.spire.doc.Document;
import com.spire.doc.documents.DocumentObjectType;
import com.spire.doc.fields.DocPicture;
import com.spire.doc.interfaces.ICompositeObject;
import com.spire.doc.interfaces.IDocumentObject;
import javax.imageio.ImageIO;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
public class ExtractImages {
public static void main(String[] args) throws IOException {
//加载Word文档
Document document = new Document();
document.loadFromFile("C:\Users\Administrator\Desktop\sample.docx");
//创建Queue对象
Queue nodes = new LinkedList();
nodes.add(document);
//创建List对象
List images = new ArrayList();
//遍历文档中的子对象
while (nodes.size() > 0) {
ICompositeObject node = nodes.poll();
for (int i = 0; i < node.getChildObjects().getCount(); i++) {
IDocumentObject child = node.getChildObjects().get(i);
if (child instanceof ICompositeObject) {
nodes.add((ICompositeObject) child);
//获取图片并添加到List
if (child.getDocumentObjectType() == DocumentObjectType.Picture) {
DocPicture picture = (DocPicture) child;
images.add(picture.getImage());
}
}
}
}
//将图片保存为PNG格式文件
for (int i = 0; i < images.size(); i++) {
File file = new File(String.format("output/图片-%d.png", i));
ImageIO.write(images.get(i), "PNG", file);
}
}
}
注意这里使用的jar包是spire.doc.jar,需要在java程序中先导入jar文件。
3. 手把手教你如何通过Java给图片添加文字和图片水印
本文探讨了如何通过Java给图片添加文字和图片水印的多种技术方案,并最终选择了最优方案。
首先,本文分析了可能的方案,包括使用JDK自带的Graphics2D、第三方库Thumbnailator以及开源工具ImageMagick和Im4Java。经过对比,我们选择了Im4Java作为实现文字和图片水印的技术方案。Im4Java支持GraphicsMagick,具备高效率和稳定性能,且不依赖dll环境,是我们的首选。
接着,本文详细介绍了如何使用Im4Java实现文字水印和图片水印,并提供了代码示例。我们还分享了在实现过程中遇到的问题以及解决方法,例如字体加载异常、国际化问题等。
在技术实现部分,我们对比了使用Graphics2D和Im4Java进行文字水印和图片水印的实现方法,发现Im4Java能够满足多种需求,包括字体大小不同、文本换行和多个图片水印等。虽然使用Im4Java需要额外安装GraphicsMagick,但在实际应用中仍然能够满足基本需求。
综上所述,Im4Java结合GraphicsMagick是实现文字水印和图片水印的高效方案。同时,我们还提供了解决字体加载异常和国际化问题的建议,以帮助开发者在实际应用中更顺利地实现图片添加文字和水印的功能。