百度OCR识别表格文字,并自动下载到本地(准确率很高)

news/2024/12/21 21:57:35/

一、输入文件及申请的Token


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
import java.util.Timer;
import java.util.TimerTask;import org.json.JSONObject;import com.alibaba.fastjson.JSON;
import com.baidu.ai.aip.utils.Base64Util;
import com.baidu.ai.aip.utils.FileUtil;
import com.baidu.ai.aip.utils.HttpUtil;public class BaiduExcel {public static void main(String[] args) throws IOException {String accessToken = getAuth("aI62Wj4bu6ZOF46R7taLstZ8", "OUBy6goyji2IU4yWjlvlbFxXF6dKGgcP");String request_id = requestPic("D:/007.jpg",accessToken);//定时器Timer timer=new Timer();   timer.schedule(new TimerTask(){   public void run(){   String url = getUrl(request_id,accessToken);download download = new download();try {download.downLoadFromUrl(url, "识别文件.xls", "D://", accessToken);System.out.println("识别成功");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}this.cancel();}},50000);            //延迟10s进行,否则显示进行中(可根据文件大小调整时间)}/*** @author Ragty* @param  获取请求id* @serialData 2018.8.22* @param filePath* @return*/public static String requestPic(String filePath,String accessToken) {String otherHost = "https://aip.baidubce.com/rest/2.0/solution/v1/form_ocr/request";try {byte[] imgData = FileUtil.readFileByBytes(filePath);String imgStr = Base64Util.encode(imgData);String params = URLEncoder.encode("image", "UTF-8") + "=" + URLEncoder.encode(imgStr, "UTF-8");/*** 线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。*/String result = HttpUtil.post(otherHost, accessToken, params);JsonAnalyze jsonAnalyze = new JsonAnalyze();Map<String, Object> map = jsonAnalyze.json2Map(result);Object a = map.get("result");String zz = jsonAnalyze.object2Json(a);String zz1 = zz.substring(1, zz.length()-1);jsonAnalyze.json2Map(zz1);String result1 = jsonAnalyze.json2Map(zz1).get("request_id").toString();return result1;} catch (Exception e) {e.printStackTrace();}return null;}/*** @author Ragty* @param  获取异步请求到的excel地址* @param  2018.8.22* @param request_id* @return*/public static String getUrl(String request_id,String accessToken) {String otherHost = "https://aip.baidubce.com/rest/2.0/solution/v1/form_ocr/get_request_result";try {String params = URLEncoder.encode("request_id", "UTF-8") + "=" + URLEncoder.encode(request_id, "UTF-8");/*** 线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。*/String result = HttpUtil.post(otherHost, accessToken, params);JsonAnalyze jsonAnalyze = new JsonAnalyze();Map<String, Object> map = jsonAnalyze.json2Map(result);Object a = map.get("result");String zz = jsonAnalyze.object2Json(a);Map<String, Object> map1 = jsonAnalyze.json2Map(zz);String url = map1.get("result_data").toString();return url;} catch (Exception e) {e.printStackTrace();}return null;}/*** @author Ragty* @param  获取当前的token* @serialData 2018.8.22* @param ak* @param sk* @return*/public static String getAuth(String ak, String sk) {// 获取token地址String authHost = "https://aip.baidubce.com/oauth/2.0/token?";String getAccessTokenUrl = authHost// 1. grant_type为固定参数+ "grant_type=client_credentials"// 2. 官网获取的 API Key+ "&client_id=" + ak// 3. 官网获取的 Secret Key+ "&client_secret=" + sk;try {URL realUrl = new URL(getAccessTokenUrl);// 打开和URL之间的连接HttpURLConnection connection = (HttpURLConnection) realUrl.openConnection();connection.setRequestMethod("GET");connection.connect();// 获取所有响应头字段Map<String, List<String>> map = connection.getHeaderFields();// 遍历所有的响应头字段for (String key : map.keySet()) {System.err.println(key + "--->" + map.get(key));}// 定义 BufferedReader输入流来读取URL的响应BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));String result = "";String line;while ((line = in.readLine()) != null) {result += line;}/*** 返回结果示例*/System.err.println("result:" + result);JSONObject jsonObject = new JSONObject(result);String access_token = jsonObject.getString("access_token");return access_token;} catch (Exception e) {System.err.printf("获取token失败!");e.printStackTrace(System.err);}return null;}}

 

二、识别效果

识别前:


识别后:



http://www.ppmy.cn/news/701127.html

相关文章

免费调用快递鸟物流跟踪轨迹订阅接口技术文档

物流跟踪由轨迹订阅接口和轨迹推送接口组成&#xff0c;对接时需要对接以下二个接口 1.轨迹订阅接口 1.1 功能说明 快递鸟物流轨迹订阅接口用于向快递鸟订阅物流轨迹信息。将订单内容通过订阅接口订阅到快递鸟&#xff0c;客户可自动获取运单的轨迹节点信息。 免费试用接口…

神策(Android)- 在曝光采集基础上学习项目架构

开篇的时候我就在想这篇blog到底有没有意义&#xff1f;因为本身使用的就是神策提供的功能&#xff0c;同时神策也提供了很完善的文档&#xff0c;而唯一要我们做的也仅仅是将它正确的集成到项目内&#xff0c;并且随着版本升级&#xff0c;文档肯定也会有一定变更… 不过&…

Flask boostrap实现图片视频上传下载展示

Flask boostrap实现图片视频上传下载展示 1、展示效果2、前端代码3、后端代码 1、展示效果 项目目录结构 2、前端代码 html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title>&l…

在Blender和Zbrush中创建激光指示器,新手硬表面建模码住!

大家好&#xff0c;今天云渲染小编给大家带来的分享是硬表面建模&#xff0c;CG艺术家Lyubov使用Blender和Zbrush创建激光指示器的幕后花絮。 介绍 我叫 Lyubov&#xff0c;来自俄罗斯圣彼得堡&#xff0c;是一名 3D 建模的初学者。虽然学习还不到一年&#xff0c;但是我对它…

解决 fatal: Authentication failed for ‘https://github.com/*/*.git/‘

原因&#xff1a;github 的认证策略发生了改变&#xff0c;在 2021年8月13日 的时候&#xff0c;用户名加密码的认证方式被去掉了&#xff0c;换成了 个人令牌&#xff08;Personal Access Token&#xff09;的校验方式。 官网解决方案&#xff1a;管理个人访问令牌 - GitHub …

PC端QQ上下载的文件会在哪个文件夹下呢?

写这篇博客的起因是&#xff1a;在电脑没有联网的情况下&#xff0c;想找到从《顺利毕业everyone》群里下载的安装包PC&#xff0c;结果不知道QQ下载的文件在哪个文件夹下&#xff0c;于是百度了一下&#xff0c;涨知识了&#xff0c;就写一篇博客记录之。 问题解答&#xff1…

怎么把游戏设置到计算机里,电脑怎么把游戏放到桌面上

如何将超级方块游戏放在计算机桌面上&#xff1f; 右键单击并选择将程序发送到桌面的快捷方式 如何在计算机(台式机)上放置点屏 您好&#xff0c;我不是说您知道这不是设备问题&#xff0c; 这不是计算机问题。 公众评论网络存在漏洞&#xff0c;主要问题可能在于网络服务提供商…

怎么把软件放在桌面上?

桌面上只有个安装包&#xff0c;每次都要重新安装打开&#x1f636;&#x1f636;&#x1f972;&#x1f972;