「java解析图片文字」java图片文字识别技术

博主:adminadmin 2022-12-01 13:37:09 63

本篇文章给大家谈谈java解析图片文字,以及java图片文字识别技术对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

如何利用java在图片上添加文字

// 读取模板图片内容

BufferedImage image = ImageIO.read(new FileInputStream("c:\\test.jpg"));

Graphics2D g = image.createGraphics();// 得到图形上下文

g.setColor(Color.BLACK); // 设置画笔颜色

// 设置字体

g.setFont(new Font("宋体", Font.LAYOUT_LEFT_TO_RIGHT, 15));// 写入签名

// 下面这一句中的43,image.getHeight()-10可以改成你要的坐标。

g.drawString("这是新加入的文字", 43, image.getHeight() - 10);

g.dispose();

FileOutputStream out = new FileOutputStream("c:\\test1.jpg");

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

encoder.encode(image);

out.close();

希望我的回答能帮助你 谢谢 呵呵 答案补充 肯定了 在一张纸上写字 肯定会自动换行的 否则写外面?逻辑都通不过去~ 答案补充 把你的意思说出了 是不是随便的写字然后就提交 就把字写在了图片上还是?多少字 有没有约束? 答案补充 g.drawString("这是新加入的文字", 43, image.getHeight() - 10);

在这个做处理 你规定了字体的大小 那么获取字符的长度*大小 一次判断不要大于宽度 否则image.getHeight() - 10++ 你试试 应该可以的 我这里没有Eclipse 答案补充 public class mains {

/**

* @param args

*/

private static int fontsize = 15;

static String jj(String str)

{

String sContent = str;

sContent=sContent.replaceAll(" "," ");

sContent=sContent.replaceAll("br/","/");

sContent=sContent.replaceAll("br","/");

return sContent;

} 答案补充 static void hh(String str)

{

BufferedImage image;

try {

image = ImageIO.read(new FileInputStream("E:\\dian zi za zhi/789.jpg"));

Graphics2D g = image.createGraphics();// 得到图形上下文

g.setColor(Color.BLACK); // 设置画笔颜色

// 设置字体

g.setFont(new Font("宋体", Font.LAYOUT_LEFT_TO_RIGHT, fontsize));// 写入签名

// 下面这一句中的43,image.getHeight()-10可以改成你要的坐标。

String text = jj(str); 答案补充 String [] text1 = text.split("/");

int h = image.getHeight();

int w = image.getWidth();

for(int i=0;itext1.length;i++)

{

g.drawString(text1[i],0,fontsize+i*fontsize);

}

g.dispose();

FileOutputStream out = new FileOutputStream("E:\\dian zi za zhi/789.jpg");

JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out);

encoder.encode(image);

out.close(); 答案补充 public static void main(String[] args) {

// TODO Auto-generated method stub

hh("sdakljsdhwwbr/asdasdbr/a");

}

}

试试 可以换行 答案补充 关于 图片的尺寸以及字体是否超出 你自己试着解决下 不要过于依赖问

java 用poi怎么解析excel里图片,excel表格里有图片和文字

都可以的吧,你横的循环,就是一行一行的,纵的取就是一列一列的,是二维数组,a[i][j],怎么取都行,看你怎么循环了

java 如何读取附加到图片上的文字

图片上的文字是没法读取的,以为这涉及到图像处理。非常非常复杂!因为如果你非要读取图片上的文字,不是几行代码可以搞定的,首相从matlaB开始学,了解什么是图像处理。然后再开发相应的jar包。当然,你也可以使用相关的软件工具,比如识图软件,通过读取软件的反馈也算是读取了图片上的文字

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文本文件转化为图片文件怎么弄?

文件在计算机中都是以二进制保存的,但系统是以文件头来区分各种文件格式的。

也就是说,仅仅更改后缀名是不行的。

按照你说想的,可以这么来做:

1、读取txt文本的每一行

2、创建BufferedImage图片,然后在图片上画读取到的文本

下面给出示例程序:

测试类 TextToImageExample.java

import java.io.File;

import java.util.Scanner;

/**

 * 文本转图片测试类

 * @author YY2924 2014/11/18

 * @version 1.0

 */

public class TextToImageExample {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        System.out.print("输入TXT文本名称 (例如: D:/java.txt ):");

        String textFileName = in.nextLine();

        System.out.print("输入保存的图片名称 (例如: D:/java.jpg):");

        String imageFileName = in.nextLine();

        

        TextToImage convert = new TextToImage(new File(textFileName), new File(imageFileName));

        boolean success = convert.convert();

        System.out.println("文本转图片:" + (success ? "成功" : "失败"));

    }

}

文本转图片类 TextToImage.java

import java.awt.Color;

import java.awt.Font;

import java.awt.Graphics;

import java.awt.image.BufferedImage;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.FileReader;

import java.io.IOException;

import com.sun.image.codec.jpeg.JPEGImageEncoder;

import com.sun.image.codec.jpeg.JPEGCodec;

/**

 * 文本转图片类

 * @author YY2924 2014/11/18

 * @version 1.0

 */

public class TextToImage {

    /** 文本文件  */

    private File textFile;

    /** 图片文件 */

    private File imageFile;

    

    /** 图片 */

    private BufferedImage image;

    /** 图片宽度  */

    private final int IMAGE_WIDTH = 400;

    /** 图片高度 */

    private final int IMAGE_HEIGHT = 600;

    /** 图片类型  */

    private final int IMAGE_TYPE = BufferedImage.TYPE_INT_RGB;

    

    /**

     * 构造函数

     * @param textFile 文本文件

     * @param imageFile 图片文件

     */

    public TextToImage(File textFile,File imageFile){

        this.textFile = textFile;

        this.imageFile = imageFile;

        this.image = new BufferedImage(IMAGE_WIDTH, IMAGE_HEIGHT, IMAGE_TYPE);

    }

    

    /**

     * 将文本文件里文字,写入到图片中保存

     * @return boolean  true,写入成功;false,写入失败

     */

    public boolean convert() {

        

        //读取文本文件

        BufferedReader reader = null;

        try {

            reader = new BufferedReader(new FileReader(textFile));

        } catch (FileNotFoundException e) {

            e.printStackTrace();

            return false;

        }

        

        //获取图像上下文

        Graphics g = createGraphics(image);

        String line;

        //图片中文本行高

        final int Y_LINEHEIGHT = 15;

        int lineNum = 1;

        try {

            while((line = reader.readLine()) != null){

                g.drawString(line, 0, lineNum * Y_LINEHEIGHT);

                lineNum++;

            }

            g.dispose();

            

            //保存为jpg图片

            FileOutputStream fos = new FileOutputStream(imageFile);

            JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos);

            encoder.encode(image);

            fos.close();

        } catch (IOException e) {

            e.printStackTrace();

            return false;

        }

        return true;

    }

    

    /**

     * 获取到图像上下文

     * @param image 图片

     * @return Graphics

     */

    private Graphics createGraphics(BufferedImage image){

        Graphics g = image.createGraphics();

        g.setColor(Color.WHITE); //设置背景色

        g.fillRect(0, 0, IMAGE_WIDTH, IMAGE_HEIGHT);//绘制背景

        g.setColor(Color.BLACK); //设置前景色

        g.setFont(new Font("微软雅黑", Font.PLAIN, 12)); //设置字体

        return g;

    }

    

}

特别注意:程序中使用到了com.sun.image.codec.jpeg.JPEGImageEncoder和 com.sun.image.codec.jpeg.JPEGCodec ,这 两个是sun的专用API,Eclipse会报错。

解决办法:

Eclipse软件,Windows-Preferences-Java-Complicer-Errors/Warnings,Deprecated and restricted API-Forbidden reference 改为 Warnning。

如果还是报错,在工程上build path,先移除JRE System Library,然后再添加JRE System Library。

java解析pdf文字顺序不对

修复你的PDF软件或者调整页面顺序。

java解析pdf获取pdf中内容信息:

第一种 使用开源组织提供的开源框架 pdfboxapi ;

特点:免费,功能强大,解析中文或许会存在乱码,默认格式有点乱,没有国产解析的那么美化。

想要按行读取:可以按照指定的模板,对pdf进行修改添加删除等操作,总之操作很骚,很强大。

1.pdfbox 需要带入依赖。

2.代码。

第二种使用国产的框架 Spire.PDF包含两种版本。

1 免费版。

友情提示: 免费版有 10 页的页数输出限制,在输出结果文档时只能输出前10页。将 PDF 文档转换为图片、Word、HTML、XPS等格式时,仅支持转换前 10 页。如超出限制,可升级到商业版,我们仅对免费版进行不定期维护。

2 商业版本。

api。

特点:商业版本收费,免费版本有限制,可供开发人员调试,解析格式友好,解析结果是按照行显示,对pdf 图形 ,水印 ,文本, 条形码等添加增删改操作,总之个人感觉比pdfbox顺手,但就是收费啊,谁让咱公司没钱呢。

主要功能:

只需 Free Spire.PDF for Java,无需 Adobe Acrobat。

Free Spire.PDF for Java 是一款完全独立的 PDF 类库。它的运行环境无需安装 Adobe Acrobat 或其他任何第三方组件。

多样化的PDF文档操作功能。

Free Spire.PDF for Java 支持画文本、图片、表格、条形码、形状到 PDF,提取文本和图片,创建、填充和删除 PDF 表单,添加文本/图片水印到 PDF,添加、更新和删除 PDF 书签,操作超链接、附件和注释,以及添加图片/文本印章到 PDF 等。

文档信息设置。

Free Spire.PDF for Java 支持设置 PDF 文档信息,例如文档属性设置,偏好设置(页面方向,页面大小,缩放比例等)。

高质量的文档转换功能。

Free Spire.PDF for Java 支持将 PDF 文档高质量地转换为 Word、HTML、XPS、图片、SVG 和 PDF/A 格式,以及将 XPS 文档高质量地转换为 PDF 格式。

文档安全性设置。

Free Spire.PDF for Java 支持给 PDF 文档添加和验证数字签名,加密和解密 PDF 文档,修改 PDF 文档的安全权限,以及检测签名后的 PDF 文档是否被修改。

易于集成。

开发人员可以轻易地将 Free Spire.PDF for Java 集成到 Java(J2SE和J2EE)应用程序中。

关于java解析图片文字和java图片文字识别技术的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-12-01,除非注明,否则均为首码项目网原创文章,转载请注明出处。