❶ 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文件。
❷ java如何識別圖片中的文字內容
Java識別圖片中的文字內容,需藉助Tesseract OCR引擎。Tesseract OCR是光學字元識別(Optical Character Recognition)工具,專門用於解析圖片中的文字,轉為文本。
要使用Tesseract OCR,首先需要在Java環境中安裝並配置它。通常,這包括在項目的構建工具中添加依賴,如在Maven或Gradle中配置Tesseract OCR依賴。
在Java代碼中使用Tesseract OCR,需要創建一個`TessBaseAPI`實例,並設置圖片文件路徑作為輸入。調用API的`setVariable()`方法,可以指定語言及其他參數,優化識別效果。
接下來,通過`TessBaseAPI`實例調用`recognize()`方法,傳入圖片路徑作為參數。此方法將解析圖片中的文字,並返回識別結果。
為確保識別准確,需要對輸入的圖片進行預處理,包括圖像大小調整、灰度轉換、二值化、雜訊去除等。在Java中,可以使用OpenCV等庫進行這些操作。
實現Java識別圖片文字功能,需結合Tesseract OCR和圖片處理技術。正確配置和優化OCR參數,以及合理的圖片預處理步驟,可以提高識別的准確率。
❸ 用java怎麼獲得一張圖片上的一個文字的坐標點 求高手解答
//提示:坐標依次列印在命令符窗口
//提示:坐標依次列印在命令符窗口
//提示:坐標依次列印在命令符窗口
//不就是監聽滑鼠事件嗎?
importjavax.swing.*;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.border.Border;
/**
*我想建立個界面,可以載入本機中圖片。
*載入後可以通過滑鼠點擊獲得圖片上任意點坐標。
*提問者:sunny929929-試用期一級
*/
{
privateJLabeltipLabel;
/**
*main()
*/
publicstaticvoidmain(String[]args){
MyPictureframe=newMyPicture();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
/**
*constructor
*/
publicMyPicture(){
setSize(800,600);//根據要求調整大小
setLocation(100,100);
setTitle("獲得圖片上任意點坐標");
setResizable(false);
Containercon=getContentPane();
ImageIconbgIcon=newImageIcon("bgpic.jpg");//注意圖片的路徑
ImagePanelbackpicPanel=newImagePanel(bgIcon);
backpicPanel.addMouseListener(this);
con.add(backpicPanel,BorderLayout.CENTER);
tipLabel=newJLabel("--------------------提示:坐標依次列印在屏幕上!--------------------");
con.add(tipLabel,BorderLayout.SOUTH);
}
/**
*
*/
publicvoidmousePressed(MouseEvente){
intx=e.getX();
inty=e.getY();
Stringmessage="("+x+","+y+")";
tipLabel.setText(message);
System.out.println(message);
}
publicvoidmouseReleased(MouseEvente){
}
publicvoidmouseEntered(MouseEvente){
}
publicvoidmouseExited(MouseEvente){
}
publicvoidmouseClicked(MouseEvente){
}
}
/**
*類ImagePanel,用於添加背景圖片
*/
classImagePanelextendsJPanel{
privateImageimg;
publicImagePanel(ImageIconimageIcon){
img=imageIcon.getImage();
}
publicvoidpaintComponent(Graphicsg){
super.paintComponent(g);
g.drawImage(img,0,0,this);
}
}