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是實現文字水印和圖片水印的高效方案。同時,我們還提供了解決字體載入異常和國際化問題的建議,以幫助開發者在實際應用中更順利地實現圖片添加文字和水印的功能。