一、前言
智能图像处理、文字表格识别、文档内容提取产品的背景源自于人工智能技术的快速发展和广泛应用。随着计算机视觉和自然语言处理技术的不断进步,人工智能在图像处理和文字识别领域取得了巨大的突破,使得这些产品能够实现更加精准和高效的功能。
在图像处理方面,智能图像处理产品能够识别图像中的各种物体、场景和特征,并进行自动标注和分类。这使得用户能够快速找到他们需要的信息,提高工作效率。同时,这些产品还能够对图像进行修复和增强,提高图像的质量和清晰度。
在文字表格识别方面,这些产品能够识别图像中的文字和表格,并将其转换为可编辑的文档。这使得用户能够方便地提取图像中的文字信息,编辑和分享文档内容。同时,这些产品还能够识别表格中的数据,并将其转换为可编辑的电子表格,方便用户进行数据分析和处理。
在文档内容提取方面,这些产品能够自动提取文档中的关键信息和内容,并进行分类和整理。这使得用户能够快速找到他们需要的信息,节省时间和精力。同时,这些产品还能够将文档内容转换为可编辑的电子文档,方便用户进行编辑和分享。
二、TextIn简介
Textln是合合信息旗下智能文字识别产品,拥有智能文字识别技术和企业服务经验,产品提供公有云API、SDK及私有化部署多种部署方式,为金融、物流、制造、移动互联网、智慧政务、智慧社区等行业提供行业个性化智能文字识别解决方案。致力于为企业、开发者及个人用户提供一站式智能文字识别服务。Textln智能文字识别引擎可以从图像和PDF文档中提取印刷、手写、印章、公式、表格、图片等富文本信息,支持50+多语言识别,众多文档类型,包括商业文件、发票、账单、收据、名片和海报。在财务共享系统中可以从混贴的发票中切分、分类、提取字段信息,支持发票中错行、倾斜、重叠、遮挡、形变、光照不均等复杂场景;在证件识别系统中支持13类国家证件识别,覆盖个人和企业所需的200+种证件识别;在人机结合系统中实现精准100%识别,远超越人类的辨识度;支持华为云、阿里云、腾讯云、百度云、Azure、AWS等云平台,同时支持GPU、CPU、NPU、iOS、Android、HarmonyOS、鲲鹏、飞腾、麒麟等主要国内外平台;Textln识别引擎在通用场景中平均1s处理完一张文本图像。
三、API的使用
3.1、注册账号,进入工作台
3.2、在“我的机器人”中选择公有云API,点击“获取机器人”,选择需要的服务
3.3、以“通用文字识别”为例,它具有详细的API文档辅助我们进行开发
四、项目案例
在我们的项目中,需要将上传的发票图片中的文字交给大模型来处理,这样就需要用到文字识别提取技术,合合信息TextIn服务正好满足我们的需求,并且合合信息TextIn服务的通用票据文字识别服务API调用简单,有详细的API说明文档和示例代码,在开发过程中极大的节省了我们的时间。
4.1、项目调用API
在我们的项目中,我们使用了合合信息TextIn的多种API
- APIManager:API 管理器
- DocumentImageTrimmingCorrection:文档图像修剪校正
- ImageScreenStriped:条纹图像屏幕
- ImageTrimmingEnhancement:图像修剪增强
- ImageWatermarkRemoval:图像水印去除
- PassengerTicket:乘客票
- PlaneTicket:飞机票
- RoadToll:公路收费
- ShippingTicket:船票
- StoreReceipt:商店收据
- TaxiInvoice:出租车发票
- TrainTickets:火车票
4.2、调用示例
1、DocumentImageTrimmingCorrection
代码:
package zjc.edu.bookkeeping.api;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
//文档图像切边矫正
public class DocumentImageTrimmingCorrection {
public static String Recognition(byte[] imgData){
// 文档图像切边矫正
String url = "https://api.textin.com/ai/service/v1/dewarp";
// 请登录后前往 “工作台-账号设置-开发者信息” 查看 x-ti-app-id
// 示例代码中 x-ti-app-id 非真实数据
String appId = "xxxxxxxxxxxxxxxxxxxxxxx";
// 请登录后前往 “工作台-账号设置-开发者信息” 查看 x-ti-secret-code
// 示例代码中 x-ti-secret-code 非真实数据
String secretCode = "xxxxxxxxxxxxxxxxxxxxxxx";
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);
return result;
}
}
2、StoreReceipt
代码:
package zjc.edu.bookkeeping.api;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
public class StoreReceipt {
public static String Recognition(byte[] imgData){
// 商铺小票识别
String url = "https://api.textin.com/robot/v1.0/api/receipt";
// 请登录后前往 “工作台-账号设置-开发者信息” 查看 x-ti-app-id
// 示例代码中 x-ti-app-id 非真实数据
String appId = "xxxxxxxxxxxxxxxxxxxxxxxxxx";
// 请登录后前往 “工作台-账号设置-开发者信息” 查看 x-ti-secret-code
// 示例代码中 x-ti-secret-code 非真实数据
String secretCode = "xxxxxxxxxxxxxxxxxxxxxxxxxx";
BufferedReader in = null;
DataOutputStream out = null;
String result = "";
try {
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();
}
}
return result;
}
}
4.3、项目测试
示例:通过调用以上API,我们可以将拍照上传的票据照片中的信息提取出来
五、总结
-
易用性高:通常优秀的API设计会简化集成过程,使开发者能快速接入并开始使用其功能,合合信息TextIn API会提供清晰的文档说明以及多种编程语言的支持,便于开发人员进行调用和二次开发。
-
功能强大:TextIn API的核心价值在于其丰富的文本处理能力,对于复杂文本的理解和抽取效果良好,尤其在文本识别、信息提取、文档智能解析等方面,可大幅度减少人工操作,提高工作效率。
-
准确性可靠:良好的API应当具备较高的准确率,无论是光学字符识别(OCR)还是自然语言理解(NLU)模块,低误报率和高识别率能保证业务数据处理的质量。
-
灵活性强:可根据不同行业和应用场景进行个性化配置和调整,适应不同类型的文本数据处理需求,这一点对于多元化业务的企业而言非常重要。
-
性能稳定:在大量数据处理过程中,API的响应速度和稳定性也是考量的重要指标,稳定的高性能输出能让企业在大规模应用时无后顾之忧。
-
服务支持:优质的客户服务和技术支持团队能及时解答用户疑问,帮助解决问题,确保API在实际运用中的顺利进行。
总而言之,合合信息TextIn API对新手十分友好,推荐大家使用。