相信你用过类似对进行图片中的文字提取的功能,但是你了解过背后的原理吗?
本文将从图片中文字提取的原理以及应用案例等多方面进行讲述,希望一文能为你讲透通用文字识别。
随着信息化和数字化的发展,大量的文字信息产生和传播,这些信息需要被整理和分析。通用文字识别技术,也称为OCR(Optical Character Recognition,光学字符识别),就是一种将图像或扫描件中的文字识别出来并转化为可编辑、可搜索的数字化文本的技术。
OCR技术 的主要原理是将图片或扫描件转化为二值图像,然后利用图像处理算法对图像进行预处理,如去噪、二值化、分割、特征提取等操作。接下来,利用模式匹配和机器学习等方法对文字进行识别,并输出识别结果。OCR技术的精度和速度取决于预处理、识别算法的复杂度和识别引擎的性能等因素。
通用文字识别可以应用在多种场景,用得好能帮助用户解决很多痛点问题,如在以下领域上,通用文字识别技术能提供非常大的帮助,包括:
讲透通用文字识别技术之后,如何找到并将这项技术应用在自己的应用里面呢。在这里推荐 APISpace 的 【通用文字识别】 API ,它支持多场景、多语种、高精度的整图文字检测和识别服务,多项指标行业领先,可识别中、英、日、韩、法、德多种语言。
具体使用方式如下:
进入 【通用文字识别 API】详情页,点击【免费试用】,即可唤起注册按钮。
注册成功后,我们在页面导航菜单点击 【我的 API】进入 【访问控制】页面,即可看到平台提供的密钥。
回到 【通用文字识别 API】详情页,再次点击【免费试用】,我们可以在获得一定次数的免费调用权限,并且进入测试界面。
在测试界面中,根据 API 接口文档中的要求,输入图片地址
如我们输入
API 返回的识别结果如下:
"words_result": [{
"word": "桃花历乱李花香",
"location": [
[978, 218],
[1046, 218],
[1046, 810],
[978, 810]
]
}, {
"word": "草色青青柳色黄",
"location": [
[1088, 211],
[1156, 210],
[1160, 810],
[1092, 810]
]
}, {
"word": "春日偏能惹恨长",
"location": [
[748, 219],
[816, 218],
[822, 810],
[754, 810]
]
}, {
"word": "东风不为吹愁去",
"location": [
[862, 219],
[930, 218],
[932, 806],
[864, 806]
]
}, {
"word": "春思",
"location": [
[1238, 218],
[1332, 218],
[1332, 447],
[1238, 447]
]
}, {
"word": "贾至",
"location": [
[624, 697],
[666, 697],
[666, 806],
[624, 806]
]
}],
"words_count": 6,
"log_id": "1e165580-cde1-11ed-989b-000000003532"
}
哇,识别结果着实非常精确,感兴趣的小伙伴赶快去体验一下。
在Java 程序中,我们可直接复制以下代码接入通用文字识别 API
OkHttpClient client = new OkHttpClient().newBuilder().build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{"image":"","url":"https://data-apibee.apispace.com/license/1678270527930990ebabe-a570-44ca-9966-b892d2bb6df8","language":"CHN_ENG"}");
Request request = new Request.Builder()
.url("https://eolink.o.apispace.com/ocrbase/ocr/v1/base")
.method("POST",body)
.addHeader("X-APISpace-Token","替换自己的 API 密钥")
.addHeader("Authorization-Type","apikey")
.addHeader("Content-Type","application/json")
.build();
Response response = client.newCall(request).execute();
System.out.println(response.body().string());