Android进行图片提取文字
对于外包杯的A37的项目需要,需要进行Andriod的图片文字识别的需要,以下是实现过程。
一:对于web的实现图片文字识别
二:android的拍照,调用图片实现提取图片
三:将web的代码进行移植到Android上
一:对于web的实现图片文字识别
对于图片识别,就是接口的调用,主要对百度云的接口调用,但是我所采用的是Textin接口。以下是调用接口的相关代码:
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws Exception {
// 通用文字识别
String url = "https://api.textin.com/ai/service/v2/recognize";
// 请登录后前往 “工作台-账号设置-开发者信息” 查看 x-ti-app-id
// 示例代码中 x-ti-app-id 非真实数据
String appId = "c81f*************************e9ff";
// 请登录后前往 “工作台-账号设置-开发者信息” 查看 x-ti-secret-code
// 示例代码中 x-ti-secret-code 非真实数据
String secretCode = "5508***********************1c17";
BufferedReader in = null;
DataOutputStream out = null;
String result = "";
try {
byte[] imgData = readfile("example.jpg"); // image
URL realUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection)realUrl.openConnection();
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("Content-Type", "application/octet-stream");
conn.setRequestProperty("x-ti-app-id", appId);
conn.setRequestProperty("x-ti-secret-code", secretCode);
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("POST"); // 设置请求方式
out = new DataOutputStream(conn.getOutputStream());
out.write(imgData);
out.flush();
out.close();
in = new BufferedReader(
new InputStreamReader(conn.getInputStream(), "UTF-8"));
String line;
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
System.out.println("发送 POST 请求出现异常!" + e);
e.printStackTrace();
}
finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
System.out.println(result);
}
public static byte[] readfile(String path)
{
String imgFile = path;
InputStream in = null;
byte[] data = null;
try
{
in = new FileInputStream(imgFile);
data = new byte[in.available()];
in.read(data);
in.close();
}
catch (IOException e) {
e.printStackTrace();
}
return data;
}
}
这可以从Textin通用代码中进行调用,可以免费试用2000次,进行更改照片地址即可使用,然后需要自己的申请appId,secretCode 的权限,更改example.jpg即可使用。
二:android的拍照,调用图片实现提取图片
网络上有很多相关的代码,我是自己摸索出来的,主要靠BitMap的数据转文件存储相关地址进行调用手机的相关地址进行识别。
原文地址:https://www.cnblogs.com/JIANGzihao0222/p/17360422.html
- c++ 文件分块
- 深入学习Apache Spark和TensorFlow
- 10.16/10.17/10.18 iptables nat表应用
- C++实现int与string之间的相互转换
- 10.15 iptables filter表案例
- 利用crypto++库,实现计算string的md5值
- daemon函数结合脚本实现start, stop, restart
- linux C语言实现文件锁
- linux基础(day 33)
- C 语言字符串分割函数
- 10.14 iptables语法
- 为安全出把力:CVE-2011-1938漏洞分析以及exp编写
- 10.13 netfilter5表5链介绍
- 用JAVA测量DEA页面的社交媒体流行度
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- Python 基础(八):与时间相关的模块
- 用 Python 实现一场环保无污染的烟花秀
- Python 基础(九):函数
- Python 基础(十二):文件基本操作
- Python 基础(十三):os 模块
- Python 基础(十四):错误和异常
- Python 基础(十五):枚举
- 一个老程序员的30年生涯回顾
- 经典 90 坦克大战 Python 版实现(支持单双人模式)
- Python 基础(十六):迭代器与生成器
- MySQL information_schema详解 COLUMNS
- MySQL information_schema详解 COLUMN_PRIVILEGES
- 一分钟学Python|Python的字典
- MySQL information_schema详解 ENGINES
- 一日一技:不用轮询,基于事件监控文件变动