目录
- 一、前言
- 二、TextIn简介
- 2.1、通用文字识别
- 2.2、国内通用票据识别
- 2.3、通用表格识别
- 三、项目案例
- 3.1、application.yml
- 3.2、TextInService
- 3.3、TextInController
- 3.4、测试
- 四、总结
一、前言
智能图像处理、文字表格识别、文档内容提取产品的背景源自于人工智能技术的快速发展和广泛应用。随着计算机视觉和自然语言处理技术的不断进步,人工智能在图像处理和文字识别领域取得了巨大的突破,使得这些产品能够实现更加精准和高效的功能。
- 在图像处理方面,智能图像处理产品能够识别图像中的各种物体、场景和特征,并进行自动标注和分类。这使得用户能够快速找到他们需要的信息,提高工作效率。同时,这些产品还能够对图像进行修复和增强,提高图像的质量和清晰度。
- 在文字表格识别方面,这些产品能够识别图像中的文字和表格,并将其转换为可编辑的文档。这使得用户能够方便地提取图像中的文字信息,编辑和分享文档内容。同时,这些产品还能够识别表格中的数据,并将其转换为可编辑的电子表格,方便用户进行数据分析和处理。
- 在文档内容提取方面,这些产品能够自动提取文档中的关键信息和内容,并进行分类和整理。这使得用户能够快速找到他们需要的信息,节省时间和精力。同时,这些产品还能够将文档内容转换为可编辑的电子文档,方便用户进行编辑和分享。
二、TextIn简介
合合信息是一家人工智能及大数据科技企业,基于自主研发的领先的智能文字识别及商业大数据核心技术,为全球C端用户和多元行业B端客户提供数字化、智能化的产品及服务。C端业务主要为面向全球个人用户的APP产品,包括扫描全能王(智能扫描及文字识别APP)、名片全能王(智能名片及人脉管理APP)、启信宝(企业商业信息查询APP)3款核心产品;公司B端业务为面向企业客户提供以智能文字识别、商业大数据为核心的服务,形成了包括基础技术服务、标准化服务和场景化解决方案的业务矩阵,满足客户降本增效、风险管理、智能营销等多元需求,助力客户实现数字化与智能化的转型升级。凭借领先的自主研发技术、成熟的产品落地能力、优质的用户体验及服务质量,公司的C端产品覆盖了全球百余个国家和地区的亿级用户,B端服务覆盖了近30个行业的企业客户。在B端业务方面,公司智能文字识别与商业大数据服务已覆盖了银行、证券、保险、政府、物流、制造、地产、零售等近30个行业的众多头部客户。《财富》杂志2022年发布的世界500强公司名单中,公司客户已覆盖超过125家。
TextIn
是上海合合信息科技股份有限公司旗下智能文字识别云服务平台
官网地址:https://www.textin.com
为全球用户提供智能图像处理、文字表格识别、文档内容提取产品
其提供的服务及其丰富,几乎可以满足多有开发者关于智能图像处理、文字识别等的需求。
关键的是TextIn
提供的API
控制台简洁易用,对于资历不深的开发者十分友好。
下面我来列举几个其公司提供的产品服务。
2.1、通用文字识别
基于自研的文字识别技术,覆盖文字、文档、表格、印章、二维码、公式等多种通用场景,提供全球50+主流语言的印刷体、手写体的高精度识别能力。可用于纸质文档电子化、办公文档/报表识别、教育类文本识别、快递面单识别等场景。
识别普通文字:
效果如下:
可以看到每种文字都被准确的识别出来,
除了普通文字识别,同时支持印刷体、手写体、倾斜、折叠、旋转等
识别印刷体:
效果如下:
识别手写体:
效果如下:
可以看到无论是普通文字、印刷体、手写体,识别效果都十分的好。
2.2、国内通用票据识别
支持对多种票据类型(多票据)票据切分、票据分类、票据识别,包括增值税普通发票、增值税普通发票(卷票)、增值税专用发票、增值税电子专用发票、增值税电子普通发票、货物运输业增值税专用发票(仅支持分类不做识别)、机动车销售统一发票、二手车销售统一发票、通用机打发票、通用定额发票、旅客运输普票、公路客运发票、船运客票、出租车发票、停车费发票、过路过桥费发票、教育费收据(仅支持分类不做识别)、行程单、火车票、增值税销货清单和其他可报销票据。
样本数据:
识别效果:
2.3、通用表格识别
通用表格识别适用于带有表格的文档图像
上传图片返回表格区域分析后的文字识别结果以及表格外区域的其他文字识别结果
样本数据:
识别效果:
三、项目案例
在我们的项目中,需要将用户上传的图片中的文字交给大模型来处理,这样就需要用到文字识别技术,合合信息TextIn服务正好满足我们的需求,并且合合信息TextIn服务的通用文字识别服务API调用简单,有详细的API说明文档和示例代码,在开发过程中极大的节省了我们的时间。
在示例代码中,支持多种主流的语言:Java、C#、python、Node.js、PHP以及HTML
合合信息TextIn服务还支持在线调试功能
- 实时监控和分析API请求和响应数据,帮助开发人员快速定位和解决问题。
- 可以模拟不同的请求参数和环境,方便开发人员测试和调试API接口
下面我来用Java语言举一个使用合合信息TextIn服务的例子
我们以通用文字识别为例
我们创建一个SpringBoot
项目,在配置文件中写入一下信息:
3.1、application.yml
# 应用服务 WEB 访问端口
server:
port: 8888
# TextIn服务参数
textin:
appid: 你的appid
secretcode: 你的secretcode
3.2、TextInService
接下来我们编写通用文字识别的逻辑代码,其本质是调用TextIn
的API
代码如下:
package com.csust.medicalassistant.service.impl;
import cn.hutool.core.io.FileUtil;
import cn.hutool.http.HttpRequest;
import cn.hutool.http.HttpResponse;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.csust.medicalassistant.common.CommonResult;
import com.csust.medicalassistant.dto.MessageDTO;
import com.csust.medicalassistant.dto.TextDTO;
import com.csust.medicalassistant.service.TextInService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import org.springframework.stereotype.Service;
import java.io.*;
import java.util.HashMap;
import java.util.Map;
/**
* @author niuben
*/
@Slf4j
@Service
public class TextInServiceImpl implements TextInService {
@Value("${textin.appid}")
public String appId;
@Value("${textin.secretcode}")
public String secretCode;
@Override
public JSONObject imgToText(String imgPath) {
byte[] imgData = readfile(imgPath);
// 通用文字识别
String url = "https://api.textin.com/ai/service/v2/recognize";
// 添加请求头信息
Map<String, String> heads = new HashMap<>();
// 使用json发送请求,下面的是必须的
heads.put("connection", "Keep-Alive");
heads.put("Content-Type", "application/octet-stream");
heads.put("x-ti-app-id", appId);
heads.put("x-ti-secret-code", secretCode);
/**
** headerMap是添加的请求头,
body是传入的参数,这里选择json,后端使用@RequestBody接收
ERNIE-Bot 4.0
*/
HttpResponse response = HttpRequest.post(url)
.headerMap(heads, false)
.body(imgData)
.timeout(5 * 60 * 1000)
.execute();
// 数据解析
JSONObject jsonResponse = JSONUtil.parseObj(response.body());
JSONObject result = (JSONObject) jsonResponse.get("result");
return 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;
}
}
3.3、TextInController
然后我们定义接口
package com.csust.medicalassistant.controller;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.csust.medicalassistant.common.CommonResult;
import com.csust.medicalassistant.service.TextInService;
import com.csust.medicalassistant.utils.ImageUtil;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import javax.annotation.Resource;
/**
* @author niuben
*/
@RestController
public class TextInController {
@Resource
private TextInService textInService;
@Resource
private ImageUtil imageUtil;
@ApiOperation("文字识别")
@PostMapping("/getinfo")
public CommonResult<Object> imageToJson(MultipartFile file){
//上传图片
String imgPath = imageUtil.uploadImgToLocal(file);
//图片识别
JSONObject result = textInService.imgToText(imgPath);
return CommonResult.success(JSONUtil.toJsonStr(result));
}
}
3.4、测试
样本图片
识别效果:
可以看到识别效果准确率很高
四、总结
总的来说合合信息的TextIn服务对于开发者来说十分友好,不仅提供的服务丰富,并且使用起来简单易上手,其识别的准确率极高,几乎上可以满足有关文字和图片处理的所有需求,强烈推荐给大家使用,再放一下官网地址:
https://www.textin.com