精华内容
下载资源
问答
  • 图片文字识别软件

    2012-11-14 09:36:18
    一个很好用的图片文字识别软件,破解版,杀毒软件可能会误报,介意的朋友请不要下载了,亲测可用!
  • 一款Android图片文字识别软件_-_图片转文字
  • OCR图片文字识别软件

    2018-03-04 10:41:52
    OCR图片文字识别软件........................................
  • 软件不需要安装,直接双击打开就可以用,废话不多说直接上图好了,方便说明问题 ...PDF文件文字识别怎么弄,现将PDF拆成图片,做了个功能批量PDF拆成图片后批量导入图片再识别 开发语言C#、基...

    软件不需要安装,直接双击打开就可以用,废话不多说直接上图好了,方便说明问题

    前段时间有人跟我讲说要批量图片(批量名片识别、批量照片识别等)识别,然后就下来研究了一下

    可以支持单页图片识别、打开一个文件夹图片批量识别(后期正计划一个文件夹内的多个文件夹分组识别,没需求就没做)

    PDF文件文字识别怎么弄,现将PDF拆成图片,做了个功能批量PDF拆成图片后批量导入图片再识别

    开发语言C#、基于Net4.5框架做的,软件支持win7以上系统,苹果的文字识别就先暂时不开发

    说说有哪些功能吧

    第一、支持语言:中英文、法语、俄语、葡萄牙、俄语、德语、韩语、日语这些需要更多的还可以加;

    第二、PDF拆图:可以将多个PDF拆成图,分组存放指定文件夹、便于按文件夹批量导入图片等;

    第三、图片压缩:图片太大影响识别,所以我们做了一个图片压缩的工具,可以将图片的范围控制在可识别范围;

               PS:建议图片在4M的范围内,像素也不易过高4096X4096太高了就不支持了

    第四、一键复制:可以将识别出来的文字一键复制出来,方便粘贴到指定位置;

    第五、一键导出:可以将文字导出至记事本txt保存起来,为什么不是word,比较难控制格式哈不在这上面多花精力了

    第六、识别过程中可中途暂停,没有写继续,用的时候发现错误了,就再来一遍,或者把识别的删掉,从没识别的开始

     

    速度嘛2-3秒一页,看图片大小,软件识别需要联网使用,基于人工智能文字识别做的,也有单机版本的准确率不是很高

    有些国际友人问:有没有英语翻译版本的哈,英文的需要自己翻译,或者找个你自己找个翻译我跟你对应翻译上去

    欢迎大家下方提出好的功能和建议,我再来完善完善 

    百度网盘链接:https://pan.baidu.com/s/1zIzGB55PO9h5_xECs4U5YQ  提取码:fvjc 

    土豪下载链接:https://download.csdn.net/download/bbyn1314/11229917

    展开全文
  • Java调用百度OCR文字识别API实现图片文字识别软件

    千次阅读 多人点赞 2019-01-06 13:35:59
    Java调用百度OCR文字识别API实现图片文字识别软件 这是一款小巧方便,强大的文字识别软件,由Java编写,配上了窗口界面 调用了百度ocr文字识别API 识别精度高。 打包生成了jar可执行程序 完整项目GitHub地址 ...

    java_baidu_ocr

    Java调用百度OCR文字识别API实现图片文字识别软件

    这是一款小巧方便,强大的文字识别软件,由Java编写,配上了窗口界面

    调用了百度ocr文字识别API 识别精度高。

    完整项目放在GitHub:https://github.com/Ymy214/java_baidu_ocr

    更新日志

    新的改变 OcrViewer 2.0 更新于 2019.1.18

    我对OcrViewer进行了一些功能拓展与界面美化,除了标准的本地图片识别功能,我增加了如下几点新功能,帮助你更方便使用本工具,进而更好地识别图像中的文字:

      1. 全新的界面设计,将会带来全新的使用体验;
      1. 在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;
      1. 增加了 截图识别 功能,你可以通过截取图片直接直接进行识别;
      1. 增加了图片预览功能,更加方便进行图文对比,减少容错;
      1. 增加了 清除图片预览 功能,可以清清除览的图片;
      1. 增加了 重新识别 等功能,如果不确定可以多次识别提高识别精确率;

    下面是功能以及新界面展示

    • 识别出师表.png
      avatar

    • 截图出师表 .png识别结果
      avatar

    • 识别代码.png
      avatar

    • 代码.png识别结果
      avatar

    • 识腾讯新闻弹窗.png
      avatar

    • 腾讯新闻弹窗.png识别结果
      avatar

    • 软件界面
      avatar

    Java源代码:

    • 主窗口类 FileChooserOCR2.java
    package baiduOcr;
    
    import java.awt.BorderLayout;
    import java.awt.CardLayout;
    import java.awt.Font;
    import java.awt.GridLayout;
    import java.awt.Image;
    import java.awt.Toolkit;
    import java.awt.datatransfer.Clipboard;
    import java.awt.datatransfer.StringSelection;
    import java.awt.datatransfer.Transferable;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.IOException;
    import java.util.HashMap;
    
    import javax.imageio.ImageIO;
    import javax.swing.Icon;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    
    import org.json.JSONArray;
    import org.json.JSONObject;
    import com.baidu.aip.ocr.AipOcr;
    
    @SuppressWarnings("serial")
    public class FileChooserOCR2 extends JFrame implements ActionListener
    {
    	// 设置APPID/AK/SK
    	public static final String appId = "15289864";
    	public static final String apiKey = "j0pj5Y7HVElkLnmn2LEXKeyO";
    	public static final String secretKey = "FKVbH7EBcGy4DIaqPnXcqE47eACzn2W7";
    
    	AipOcr client = new AipOcr(appId, apiKey, secretKey);
    	JButton open, re0, copy, screen, reset, reocr, b6;
    	JPanel ocrPanel, pNorth, pSouth, pWest, pEast, pCenter, pCenterLeft, pCenterRight;
    	JTextArea ocrText;
    	JLabel previewLabel, printLabel;
    	ImageIcon defaultPreviewImg;
    	JScrollPane areaScroll;
    	String filePath = "./img/preview.jpg";
    	BufferedImage screenImage;// 用与子窗体给父窗体传值
    	// 构造方法
    
    	public FileChooserOCR2()
    	{
    		// 主面板
    		ocrPanel = new JPanel();
    		ocrPanel.setLayout(new BorderLayout());
    
    		// 各个按钮
    		open = new JButton("[选择图片>>>文字识别]");
    		re0 = new JButton("清空");
    		copy = new JButton("复制");
    		screen = new JButton("[截图识别]");
    		reset = new JButton("清除");
    		reocr = new JButton("重识");
    		b6 = new JButton("b6");
    		// 设置各按钮字体
    		open.setFont(new Font("宋体", Font.BOLD, 18));
    		screen.setFont(new Font("宋体", Font.BOLD, 18));
    		copy.setFont(new Font("宋体", Font.BOLD, 18));
    		re0.setFont(new Font("宋体", Font.BOLD, 18));
    		reset.setFont(new Font("宋体", Font.BOLD, 18));
    		reocr.setFont(new Font("宋体", Font.BOLD, 18));
    		b6.setFont(new Font("宋体", Font.BOLD, 18));
    		// 图片预览标签以及状态提示标签
    		defaultPreviewImg = new ImageIcon("./img/preview.jpg");
    		previewLabel = new JLabel(defaultPreviewImg);
    		printLabel = new JLabel("输出:");
    		// 文本域
    		ocrText = new JTextArea("输出内容。。。");
    		ocrText.setEditable(true);
    		ocrText.setVisible(true);
    		ocrText.setFont(new Font("宋体", Font.BOLD, 18));
    		// 各方位分面板
    		pWest = new JPanel(new GridLayout(2, 0));
    		pEast = new JPanel(new GridLayout(2, 2));
    		pSouth = new JPanel(new GridLayout(0, 2));
    		pCenter = new JPanel(new GridLayout(0, 2));
    		pCenterLeft = new JPanel(new CardLayout());
    		pCenterRight = new JPanel(new CardLayout());
    
    		// 默认预览图片是否伸缩
    		// previewImg.setImage(previewImg.getImage().getScaledInstance(340,
    		// 466,Image.SCALE_DEFAULT));
    		// previewLabel.setIcon(previewImg);
    		//
    
    		// 文本域的滚动条
    		areaScroll = new JScrollPane(ocrText);
    		// 设置横向滚动条始终开启
    		// areaScroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    		// 设置垂直滚动条始终开启
    		// areaScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    		// 设置横向滚动条自动(有需要时)开启
    		areaScroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
    		// 设置垂直滚动条自动(有需要时)开启
    		areaScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
    
    		// 添加监听
    		open.addActionListener(this);
    		re0.addActionListener(this);
    		copy.addActionListener(this);
    		screen.addActionListener(this);
    		reset.addActionListener(this);
    		reocr.addActionListener(this);
    
    		// 各组件依次加入相应方位面板
    		pCenterLeft.add(previewLabel);
    		// pCenterRight.add(ocrText);
    		pCenterRight.add(areaScroll);
    
    		pWest.add(reocr);
    		pWest.add(reset);
    
    		pSouth.add(screen);
    		pSouth.add(printLabel);
    		pCenter.add(pCenterLeft);
    		pCenter.add(pCenterRight);
    		pEast.add(copy);
    		pEast.add(re0);
    
    		// 各方位面板加入主面板
    		ocrPanel.add(open, BorderLayout.NORTH);
    		ocrPanel.add(pWest, BorderLayout.WEST);
    		ocrPanel.add(pEast, BorderLayout.EAST);
    		ocrPanel.add(pCenter, BorderLayout.CENTER);
    		ocrPanel.add(pSouth, BorderLayout.SOUTH);
    
    		ocrPanel.setSize(300, 300);
    		this.add(ocrPanel);
    		this.setBounds(400, 200, 900, 600);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent e)
    	{
    
    		if (e.getSource() == re0)
    		{
    			ocrText.setText("已清空内容。。。");
    			printLabel.setText("输出:已清空内容。。。");
    		}
    		if (e.getSource() == copy)
    		{
    			String jianqieban = ocrText.getText();
    			setSysClipboardText(jianqieban);
    			printLabel.setText("输出:已复制到剪贴板。。。");
    		}
    		if (e.getSource() == screen)
    		{
    			new ScreenShotTest(this);
    			// 现已实现为截屏功能, 截屏功能已经封装到一个类文件中,参考的代码
    		}
    		if (e.getSource() == reocr)
    		{
    			ocrText.setText(imgOcr(filePath));
    			printLabel.setText("输出:已重新识别。。。");
    		}
    		if (e.getSource() == reset)
    		{
    			previewLabel.setIcon(defaultPreviewImg);
    			filePath = "./img/preview.jpg";
    			printLabel.setText("输出:已清除预览。。。");
    		}
    		if (e.getSource() == open)
    		{
    			printLabel.setText("输出:选择文件。。。");
    			System.out.println(e.getSource());
    			// TODO Auto-generated method stub
    			JFileChooser jfc = new JFileChooser();
    			jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
    			jfc.showDialog(new JLabel(), "选择");
    			File file = jfc.getSelectedFile();
    			if (file.isDirectory())
    			{
    				System.out.println("(选择目录) $ " + file.getAbsolutePath());
    				System.out.println("请选择图片。。。");
    			} else if (file.isFile())
    			{
    				filePath = file.getAbsolutePath();
    				ImageIcon ocrImg = new ImageIcon(filePath);
    				System.out.println("(选择文件) $ " + filePath);
    				ocrText.setText("正在识别。。。");
    				// 缩放后的图片,用到了一个图片缩放算法
    				ocrImg.setImage(ocrImg.getImage().getScaledInstance(340, 470, Image.SCALE_DEFAULT));
    				previewLabel.setIcon(ocrImg);
    				String ocrStr = imgOcr(filePath);
    				printLabel.setText("输出:正在识别。。。");
    				ocrText.setText(ocrStr);
    				printLabel.setText("输出:识别完毕!!!。。。");
    
    			}
    			System.out.println("正在识别>>>" + jfc.getSelectedFile().getName());
    		}
    
    	}
    
    	// 复制到剪贴板的方法
    	public static void setSysClipboardText(String writeMe)
    	{
    		Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();
    		Transferable tText = new StringSelection(writeMe);
    		clip.setContents(tText, null);
    	}
    
    	// 主方法
    	public static void main(String[] args)
    	{
    		FileChooserOCR2 ocrWin = new FileChooserOCR2();
    		ocrWin.setVisible(true);
    	}
    
    	/*
    	 * 文字识别方法
    	 */
    	public String imgOcr(String imgpath)
    	{
    		// 传入可选参数调用接口
    		HashMap<String, String> options = new HashMap<String, String>();
    		options.put("language_type", "CHN_ENG");
    		options.put("detect_direction", "true");
    		options.put("detect_language", "true");
    		options.put("probability", "true");
    
    		// 参数为本地路径
    		JSONObject res = client.basicGeneral(imgpath, options);
    		// 解析json-------------
    		JSONArray wordsResult = (JSONArray) res.get("words_result");
    		String ocrStr = "\n";
    		for (Object obj : wordsResult)
    		{
    			JSONObject jo = (JSONObject) obj;
    			ocrStr += jo.getString("words") + "\n";
    		}
    
    		// 解析json-------------
    		return ocrStr;
    		// return res.toString(2);
    
    	}
    
    	/*
    	 * 文字识别方法(方法的重载)
    	 */
    	public String imgOcr(byte[] imgInbyte)
    	{
    		// 传入可选参数调用接口
    		HashMap<String, String> options = new HashMap<String, String>();
    		options.put("language_type", "CHN_ENG");
    		options.put("detect_direction", "true");
    		options.put("detect_language", "true");
    		options.put("probability", "true");
    
    		// 参数为二进制数组
    		JSONObject res = client.basicGeneral(imgInbyte, options);
    		// 解析json-------------
    		JSONArray wordsResult = (JSONArray) res.get("words_result");
    		String ocrStr = "\n";
    		for (Object obj : wordsResult)
    		{
    			JSONObject jo = (JSONObject) obj;
    			ocrStr += jo.getString("words") + "\n";
    		}
    
    		// 解析json-------------
    		return ocrStr;
    		// return res.toString(2);
    
    	}
    
    }
    
    
    
    
    
    
    
    package baiduOcr;
    
    import java.awt.AWTException;
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.EventQueue;
    import java.awt.Graphics;
    import java.awt.Image;
    import java.awt.Rectangle;
    import java.awt.Robot;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseMotionAdapter;
    import java.awt.image.BufferedImage;
    import java.awt.image.RescaleOp;
    import java.io.ByteArrayOutputStream;
    import java.io.File;
    import java.io.IOException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    import javax.imageio.ImageIO;
    import javax.swing.Icon;
    import javax.swing.ImageIcon;
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JToolBar;
    import javax.swing.JWindow;
    import javax.swing.filechooser.FileNameExtensionFilter;
    import javax.swing.filechooser.FileSystemView;
    
    public class ScreenShotTest
    {
    	private FileChooserOCR2 superWindow;
    
    	public ScreenShotTest(FileChooserOCR2 superWimdow)
    	{
    		this.superWindow = superWimdow;
    		EventQueue.invokeLater(new Runnable() {
    			@Override
    			public void run()
    			{
    				try
    				{
    					new ScreenShotWindow(superWindow);
    				} catch (AWTException e)
    				{
    					e.printStackTrace();
    				}
    			}
    		});
    	}
    
    }
    
    /*
     * 截图窗口
     */
    class ScreenShotWindow extends JWindow
    {
    
    	private int orgx, orgy, endx, endy;
    	private BufferedImage image = null;
    	private BufferedImage tempImage = null;
    	private BufferedImage saveImage = null;
    
    	private ToolsWindow tools = null;
    
    	private FileChooserOCR2 superWin;
    
    	public ScreenShotWindow(FileChooserOCR2 superWindow) throws AWTException
    	{
    		this.superWin = superWindow;
    
    		// 获取屏幕尺寸
    		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    		this.setBounds(0, 0, d.width, d.height);
    
    		// 截取屏幕
    		Robot robot = new Robot();
    		image = robot.createScreenCapture(new Rectangle(0, 0, d.width, d.height));
    
    		this.addMouseListener(new MouseAdapter() {
    			@Override
    			public void mousePressed(MouseEvent e)
    			{
    				// 鼠标松开时记录结束点坐标,并隐藏操作窗口
    				orgx = e.getX();
    				orgy = e.getY();
    
    				if (tools != null)
    				{
    					tools.setVisible(false);
    				}
    			}
    
    			@Override
    			public void mouseReleased(MouseEvent e)
    			{
    				// 鼠标松开时,显示操作窗口
    				if (tools == null)
    				{
    					tools = new ToolsWindow(ScreenShotWindow.this, e.getX(), e.getY());
    				} else
    				{
    					tools.setLocation(e.getX(), e.getY());
    				}
    				tools.setVisible(true);
    				tools.toFront();
    			}
    		});
    
    		this.addMouseMotionListener(new MouseMotionAdapter() {
    
    			@Override
    			public void mouseDragged(MouseEvent e)
    			{
    				// 鼠标拖动时,记录坐标并重绘窗口
    				endx = e.getX();
    				endy = e.getY();
    
    				// 临时图像,用于缓冲屏幕区域放置屏幕闪烁
    				Image tempImage2 = createImage(ScreenShotWindow.this.getWidth(), ScreenShotWindow.this.getHeight());
    				Graphics g = tempImage2.getGraphics();
    				g.drawImage(tempImage, 0, 0, null);
    				int x = Math.min(orgx, endx);
    				int y = Math.min(orgy, endy);
    				int width = Math.abs(endx - orgx) + 1;
    				int height = Math.abs(endy - orgy) + 1;
    				// 加上1防止width或height0
    				g.setColor(Color.BLUE);
    				g.drawRect(x - 1, y - 1, width + 1, height + 1);
    				// 减1加1都了防止图片矩形框覆盖掉
    				saveImage = image.getSubimage(x, y, width, height);
    				g.drawImage(saveImage, x, y, null);
    
    				ScreenShotWindow.this.getGraphics().drawImage(tempImage2, 0, 0, ScreenShotWindow.this);
    			}
    		});
    
    		this.setVisible(true);
    	}
    
    	@Override
    	public void paint(Graphics g)
    	{
    		RescaleOp ro = new RescaleOp(0.8f, 0, null);
    		tempImage = ro.filter(image, null);
    		g.drawImage(tempImage, 0, 0, this);
    	}
    
    	// 保存图像到文件
    	public void saveImage() throws IOException
    	{
    		// 先隐藏窗口后台执行,显得程序执行很快
    		this.setVisible(false);
    		tools.setVisible(false);
    
    		JFileChooser jfc = new JFileChooser();
    		jfc.setDialogTitle("保存");
    
    		// 文件过滤器,用户过滤可选择文件
    		FileNameExtensionFilter filter = new FileNameExtensionFilter("JPG", "jpg");
    		jfc.setFileFilter(filter);
    
    		// 初始化一个默认文件(此文件会生成到桌面上)
    		SimpleDateFormat sdf = new SimpleDateFormat("yyyymmddHHmmss");
    		String fileName = sdf.format(new Date());
    		File filePath = FileSystemView.getFileSystemView().getHomeDirectory();
    		File defaultFile = new File(filePath + File.separator + fileName + ".jpg");
    		jfc.setSelectedFile(defaultFile);
    
    		int flag = jfc.showSaveDialog(this);
    		if (flag == JFileChooser.APPROVE_OPTION)
    		{
    			File file = jfc.getSelectedFile();
    			String path = file.getPath();
    			// 检查文件后缀,放置用户忘记输入后缀或者输入不正确的后缀
    			if (!(path.endsWith(".jpg") || path.endsWith(".JPG")))
    			{
    				path += ".jpg";
    			}
    			// 写入文件
    			superWin.printLabel.setText("输出:已保存截图!!!");
    			ImageIO.write(saveImage, "jpg", new File(path));
    
    			dispose();
    		}
    	}
    
    	// 返回截取的图片
    	public void okImage()
    	{
    		
    		this.setVisible(false);
    		tools.setVisible(false);
    		superWin.printLabel.setText("输出:识别截图成功!!!");
    		ByteArrayOutputStream baos = null;
    		try
    		{
    			baos = new ByteArrayOutputStream();
    			ImageIO.write(saveImage, "jpg", baos);
    			byte[] imageInByte = baos.toByteArray();// 使用toByteArray()方法转换成字节数组
    			superWin.ocrText.setText(superWin.imgOcr(imageInByte));
    			baos.flush();// 会产生IOException异常
    
    		} catch (IOException e1)
    		{
    			e1.printStackTrace();
    		} finally
    		{
    			try
    			{
    				if (baos != null)
    				{
    					baos.close();
    				}
    			} catch (Exception ex)
    			{
    				ex.printStackTrace();
    			}
    		}
    
    		dispose();
    	}
    
    	/*
    	 * 文字识别方法(方法的重载) 用父窗口类的
    	 */
    
    	/*
    	 * 文字识别方法
    	 */
    
    }
    
    /*
     * 操作窗口
     */
    class ToolsWindow extends JWindow implements ActionListener
    {
    	private ScreenShotWindow parent;
    
    	JButton saveButton, closeButton, okButton;
    
    	public ToolsWindow(ScreenShotWindow parent, int x, int y)
    	{
    		this.parent = parent;
    		this.setLayout(new BorderLayout());
    		JToolBar toolBar = new JToolBar("Java 截图");
    
    		// 保存按钮
    		saveButton = new JButton("◰");
    		// 关闭按钮
    		closeButton = new JButton("✘");
    		// 选定按钮
    		okButton = new JButton("✔");
    
    		saveButton.addActionListener(this);
    		closeButton.addActionListener(this);
    		okButton.addActionListener(this);
    
    		toolBar.add(saveButton);
    		toolBar.add(closeButton);
    		toolBar.add(okButton);
    
    		this.add(toolBar, BorderLayout.NORTH);
    
    		this.setLocation(x, y);
    		this.pack();
    		this.setVisible(true);
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent e)
    	{
    		// TODO Auto-generated method stub
    		if (e.getSource() == saveButton)
    		{
    			try
    			{
    				parent.saveImage();
    				dispose();
    			} catch (IOException e1)
    			{
    				e1.printStackTrace();
    			}
    		}
    		if (e.getSource() == closeButton)
    		{
    			parent.dispose();
    			dispose();
    			// System.exit(0);
    		}
    		if (e.getSource() == okButton)
    		{
    			// 返回选定的图片
    			parent.okImage();
    			dispose();
    		}
    	}
    
    }
    
    
    

    ↑↑↑↑↑↑↑↑↑↑↑↑以上为2019.1.18日OcrViewer2.0第二代↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

    ↓↓↓↓↓↓↓↓↓↓↓↓以下为2019.1.12日OcrViewer1.0第一代↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

    • 打包生成了jar可执行程序

    • 完整项目GitHub地址 新人有帮助有用的话请给个star谢谢了!

    • https://github.com/Ymy214/java_baidu_ocr

    • 识别图一
      avatar

    • 图一识别结果
      avatar

    • 识别图二
      avatar

    • 图二识别结果
      avatar

    • 识别图三
      avatar

    • 图三识别结果
      avatar

    • 软件界面
      avatar

    Java源代码:

    
    package baiduOcr;
    
    import java.awt.BorderLayout;
    import java.awt.Font;
    import java.awt.Toolkit;
    import java.awt.datatransfer.Clipboard;
    import java.awt.datatransfer.StringSelection;
    import java.awt.datatransfer.Transferable;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.io.File;
    import java.util.HashMap;
    import javax.swing.JButton;
    import javax.swing.JFileChooser;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTextArea;
    
    import org.json.JSONArray;
    import org.json.JSONObject;
    import com.baidu.aip.ocr.AipOcr;
    
    @SuppressWarnings("serial")
    public class FileChooserOCR extends JFrame implements ActionListener
    {
    	// 设置APPID/AK/SK
    	public static final String appId = "15289864";
    	public static final String apiKey = "j0pj5Y7HVElkLnmn2LEXKeyO";
    	public static final String secretKey = "FKVbH7EBcGy4DIaqPnXcqE47eACzn2W7";
    	
    	AipOcr client = new AipOcr(appId, apiKey, secretKey);
    	JButton open, b1, b2, b3;
    	JPanel ocrPanel;
    	JTextArea ocrText;
    	JScrollPane areaScroll;
    	
    	// 构造方法
    	public FileChooserOCR()
    	{
    		ocrPanel = new JPanel();
    		ocrPanel.setLayout(new BorderLayout());
    		open = new JButton("选择图片>>>文字识别");
    		b1 = new JButton("清空");
    		b2 = new JButton("复制");
    		b3 = new JButton("配置");
    		open.setFont(new Font("宋体", Font.BOLD, 18));
    		b3.setFont(new Font("宋体", Font.BOLD, 18));
    		b2.setFont(new Font("宋体", Font.BOLD, 18));
    		b1.setFont(new Font("宋体", Font.BOLD, 18));
    		
    		//文本域的滚动条
    //		areaScroll = new JScrollPane(ocrText);
    //		areaScroll.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
    //		areaScroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
    		//添加监听
    		open.addActionListener(this);
    		b1.addActionListener(this);
    		b2.addActionListener(this);
    		b3.addActionListener(this);
    		
    		ocrText = new JTextArea("输出内容。。。");
    		ocrText.setEditable(true);
    		ocrText.setVisible(true);
    		ocrText.setFont(new Font("宋体", Font.BOLD, 18));
    		ocrPanel.add(open, BorderLayout.NORTH);
    		ocrPanel.add(b1, BorderLayout.EAST);
    		ocrPanel.add(b2, BorderLayout.WEST);
    		ocrPanel.add(b3, BorderLayout.SOUTH);
    		ocrPanel.add(ocrText, BorderLayout.CENTER);
    //		ocrPanel.add(areaScroll);
    		ocrPanel.setSize(300, 300);
    		this.add(ocrPanel);
    		this.setBounds(400, 200, 900, 600);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent e)
    	{
    		if(e.getSource()==b1)
    		{
    			ocrText.setText("已清空内容。。。");
    		}
    		if(e.getSource()==b2)
    		{
    			String jianqieban = ocrText.getText();
    			setSysClipboardText(jianqieban);
    		}
    		if (e.getSource()==b3)
    		{
    			//日后实现
    		}
    		if(e.getSource()==open)
    		{
    			System.out.println(e.getSource());
    			// TODO Auto-generated method stub
    			JFileChooser jfc = new JFileChooser();
    			jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
    			jfc.showDialog(new JLabel(), "选择");
    			File file = jfc.getSelectedFile();
    			if (file.isDirectory())
    			{
    				System.out.println("(选择目录) $ " + file.getAbsolutePath());
    				System.out.println("请选择图片。。。");
    			} 
    			else if (file.isFile())
    			{
    				System.out.println("(选择文件) $ " + file.getAbsolutePath());
    				ocrText.setText("正在识别。。。");
    				String ocrStr = this.imgOcr(file.getAbsolutePath());
    				ocrText.setText(ocrStr);
    			}
    			System.out.println("正在识别>>>"+jfc.getSelectedFile().getName());
    		}
    		
    
    	}
    
    	//复制到剪贴板
    	public static void setSysClipboardText(String writeMe) {  
            Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();  
            Transferable tText = new StringSelection(writeMe);  
            clip.setContents(tText, null);  
        } 
    
    	// 主方法
    	public static void main(String[] args)
    	{
    		FileChooserOCR ocrWin = new FileChooserOCR();
    		ocrWin.setVisible(true);
    	}
    	/*
    	 * 文字识别方法
    	 */
    	public String imgOcr(String imgpath)
    	{
    		// 传入可选参数调用接口
    		HashMap<String, String> options = new HashMap<String, String>();
    		options.put("language_type", "CHN_ENG");
    		options.put("detect_direction", "true");
    		options.put("detect_language", "true");
    		options.put("probability", "true");
    
    		// 参数为本地路径
    		JSONObject res = client.basicGeneral(imgpath, options);
    		//解析json-------------
    		JSONArray wordsResult = (JSONArray)res.get("words_result");
    		String ocrStr = "\n";
    		for(Object obj : wordsResult)
    		{
    			JSONObject jo = (JSONObject)obj;
    			ocrStr += jo.getString("words") + "\n";
    		}
    		
    		//解析json-------------
    		return ocrStr;
    //        return res.toString(2);
            
            
            
    		// 参数为二进制数组
    		// byte[] file = readFile("test.jpg");
    		// res = client.basicGeneral(file, options);
    		// System.out.println(res.toString(2));
    
    		// 通用文字识别, 图片参数为远程url图片
    		// JSONObject res = client.basicGeneralUrl(url, options);
    		// System.out.println(res.toString(2));
    
    	}
    
    }
    
    
    

    完整项目放在GitHub:https://github.com/Ymy214/java_baidu_ocr

    展开全文
  • 图片文字识别软件.zip

    2020-06-01 18:42:08
    这个软件文字识别工具,自己用了很久蛮好用,就推荐给大家
  • 所以如果要用图片文字就会用到图片文字识别软件,这个软件能够将图片文字识别出来,识别得到的文字是可以编辑和复制的文字,使用起来就便捷多了。但是对于图片文字识别软件怎么下载很多网友都不是很明白,今天小编就...
    因为图片文字不能复制和编辑,也就不能使用。所以如果要用图片文字就会用到图片文字识别软件,这个软件能够将图片文字识别出来,识别得到的文字是可以编辑和复制的文字,使用起来就便捷多了。但是对于图片文字识别软件怎么下载很多网友都不是很明白,今天小编就以捷速
    ocr文字识别软件为例给大家介绍。
    


      在百度搜索“ocr文字识别软件”就能看到捷速ocr文字识别软件排在第一位,因为这么是通过安全认证的,可以放心下载。当然你也可以到捷速 ocr识别软件的官网进行下载。


      接下来会直接弹出一个添加新下载的对话框,选择好存放的路径,点击“下载”就可以了。(小编用的是迅雷下载,其它方式下载也是同样的道理)


      后面的操作就不做赘述了因为太简单了,只要根据提示一步步进行操作准不会错。


      结束之后在桌面会生成一个捷速ocr文字识别软件的快捷方式,打开就能直接进入到操作主界面。


      小编为什么选择捷速ocr文字识别软件,一个原因是小编使用的这个软件介绍起来非常方便,主要原因是软件的识别效果非常好,值得推荐给广大的网友。
    展开全文
  • ABBYY FineReader是一款OCR图片文字识别软件,可以快速、方便地将扫描纸质文件、PDF格式及数字或移动电话图像转换成可编辑格式——Microsoft® Word、Excel®、PowerPoint®、可检索的PDF、HTML、DjVu等。...

    ABBYY FineReader是一款OCR图片文字识别软件,可以快速、方便地将扫描纸质文件、PDF格式及数字或移动电话图像转换成可编辑格式——Microsoft® Word、Excel®、PowerPoint®、可检索的PDF、HTML、DjVu等。99.8%的识别准确率即刻识别文本,复制和粘贴,搜索或编辑。

    官方下载地址:http://www.abbyychina.com/finereader12.html

    安装过程:

    运行安装程序,解压安装包



    解压完成,开始安装:






    这里很多选项其实可以不选



    启动软件


    可以选择任务菜单 的快速打开,也可以选择工具条上的打开


    选择一张希望转换为文字的图片:


    最左侧是打开的图片列表,有时打开一张图片可能会被分割为多页。

    中间的窗口是单页图片的完整视图,

    右侧窗口为识别结果,有背景色的地方为识别的不精确的,可以手工校正,

    下面的窗口为放大窗口,方便进行编辑处理。



    展开全文
  • 电脑截图OCR识别工具精小版(免费图片文字识别软件)是一款识别速度快准确率也高的OCR文字识别辅助软件。绿色先锋小编给大家带来一款非常的方便的图片文字识别工具——截图OCR识别工具,该软件体积小巧,操作简单,它...
  • 今天再分享一个图片文字识别软件,上次的还能用,看哪个好用用哪个,这次分享的居然还有翻译功能,还会朗读...PandaOCR,软件可以从GitHub下载(注意这是个神奇的网站大家一定要记住...
  • 图片文字识别软件哪个比较好 趁年轻就应该在事业上多花点心思,这样为以后积攒更多的资本,相信很多人都有这样的想法。于是在工作中总希望自己能够做的完美,但是这一切并不是那么的简单,小韩在图片中文字...
  • 把pdf中,或者图片中的文字变成文字,文字识别软件,轻松将图片或者Pdf等格式的文字识别出来,准确率很高,OCR。自己在用的,一直珍藏,100%能用,而且超好用,放上来共享,同时赚点分数,下别人的好东西
  • 今天小编分享的是图片文字识别软件的集合,总有一款是适合你的! 1.QQ扫一扫 大家应该都知道QQ可以扫一扫,然后将图片扫一扫进行识别文字。   2.迅捷PDF阅读器 这款软件之前跟大家介绍过,是一款PDF阅读器,可以...
  • OCR文字识别技术实际上是一种高效的输入方式,所谓OCR也就是图像文字识别技术,利用计算机将扫描仪... 使用汉王ocr文字识别软件后 就可以告别以往繁琐而低效率的手工录入模式了~只用扫描仪一扫,轻轻松松搞定一本书!
  • 截取图片识别文字,小巧 快速 精准的高,常更新、在线免费识别文字软件,OCR文字识别软件 在线免费好用识别图片文字 小巧 精准度高
  • ocr5.7z图片文字识别

    2020-03-03 09:36:28
    一款非常简便的图片文字识别软件,可识别剪贴板,粘贴图片,即可将图片中的文字转成可编辑文本,格式上偶尔会有失真,但识别率还算高
  • 捷速OCR文字识别软件是将你的图片转换成word及可编辑的文字。该软件具备一键转换功能,是OCR识别软件中包含格式较多、识别率较高、速度较快的一款识别软件。本软件支持识别前对页
  • 免费图片文字识别,非常好用

    千次阅读 2019-04-23 09:16:21
    免费图片文字识别是可以...给大家分享一个免费的图片文字识别软件。 得力OCR文字识别软件是要给大家分享的免费的文字识别软件,软件并不是完全免费的,每天有三次的免费转换次数,偶尔进行图片转换,完全是可以利...
  • OCR文字识别软件不管是在工作中还是学习中,都能给我们很大的便利,因此OCR文字识别软件越来越受欢迎。随着手机设备的普及和广泛应用,OCR软件可以在手机上,电脑上等移动设备直接使用。但是我们会发现OCR文字识别...
  • 迅捷ocr文字识别软件支持图片文字识别、图片文字转换成word、扫描文件转换成word等多种文字识别技术,是一款多功能的ocr识别软件! 使用方法:优质步:下载安装迅捷ocr文字识别软件
  • 2020年图片文字识别,百度文库文字识别工具 2020年图片文字识别,百度文库文字识别工具 2020年图片文字识别,百度文库文字识别工具
  • **如何进行JPG图片文字识别...方法还是有的,有接触过的朋友都知道选择图片文字识别软件是可以轻松进行识别的。 下面给大家分享一个简单的方法,就是使用得力OCR文字识别软件,将JPG图片上的文字识别成可编辑文字。 ...
  • 图片文字识别教程

    千次阅读 2019-04-10 16:17:58
    图片文字识别教程图片文字识别在线文字识别一: 图片转txt二:图片+pdf 转txt三:图片+pdf 转txt离线文字识别OneNote2016笔记编辑工具文字识别一:软件下载+安装+激活二:如何使用软件 识别图片文字和pdf 文字<...
  • c#实现OCR图片文字识别,包含图片预处理提高识别率。支持简体繁体识别
  • 图文,图片文字识别输出软件

    热门讨论 2011-07-25 14:05:59
    全智能对图文,图片文字识别,输出,免除手动打字的痛苦!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,871
精华内容 14,748
关键字:

图片文字识别软件