图片文字识别OCR调研-中文

news2024/9/21 23:30:49

直接看效果对比

tesseract-ocr

该识别引擎最新版本tesseract4添加了支持神经网络(LSTM)的,该引擎专注于线条识别, 同时也保留了Tesseract OCR 引擎,该引擎通过识别字符模式来工作。
我们需求端的后台语言是go,因此我选择了tesseract-ocr/tesseract 的go语言版本------gosseract 来体验识别效果,我是直接下载了web版本来部署:https://github.com/otiai10/ocrserver, 部署后的识别效果如下图。
在这里插入图片描述
可以看到中文的识别能力一般,很多地方非常方正的中文也识别错了。
注意

  1. 要能识别中文的话需要安装中文训练模型,下载地址
    https://github.com/tesseract-ocr/tessdata
    中文语言不支持命令行安装

apt-get install apt-get install -y tesseract-ocr-chi-sim

因此需要手动下载,下载后修改Dockerfile文件,将中文预料模型安装到指定位置

FROM debian:bullseye-slim
LABEL maintainer="otiai10 <otiai10@gmail.com>"

#ARG LOAD_LANG=chi_sim

RUN apt update \
    && apt install -y \
      ca-certificates \
      libtesseract-dev=4.1.1-2.1 \
      tesseract-ocr=4.1.1-2.1 \
      golang=2:1.15~1

ENV GO111MODULE=on
ENV GOPATH=${HOME}/go
ENV PATH=${PATH}:${GOPATH}/bin
## 将模型copy到指定的路径下
ENV TESSDATA_PREFIX=/usr/share/tesseract-ocr/4.00/tessdata/
COPY ./tessdata/chi_sim.traineddata ${TESSDATA_PREFIX}chi_sim.traineddata 
ADD . $GOPATH/src/github.com/otiai10/ocrserver
WORKDIR $GOPATH/src/github.com/otiai10/ocrserver
RUN go get -v ./... && go install .

# Load languages
RUN if [ -n "${LOAD_LANG}" ]; then apt-get install -y tesseract-ocr-${LOAD_LANG}; fi

ENV PORT=8080
CMD ["ocrserver"]

TrWebOCR

这是一款国内作者开源的专门用于中文识别,clone下来后安装依赖包后就可以直接跑起来了。
我的是centOS 8.x系统,安装python依赖后运行出现了一下错误:

ImportError: libSM.so.6: cannot open shared object file: No such file or directory

缺少依赖包,安装sudo yum install libXext libSM libXrender 后解决,其他系统可以参考,这个回答:

https://stackoverflow.com/questions/47113029/importerror-libsm-so-6-cannot-open-shared-object-file-no-such-file-or-directo

运行后的效果如下图:
在这里插入图片描述

对比之前tesseract-ocr效果有比较明显的进步,特别是中文识别的效果好很多,tesseract-ocr识别错的地方,例如我的名字,还有编字这边都没有问题。

腾讯云OCR识别

体验demo入口:https://cloud.tencent.com/act/event/ocrdemo, 腾讯云OCR识别能力和TrWebOCR比感觉更好点,特别是签名的文字除了姓其他2个字都对了,而TrWebOCR就差别有点大,英文的识别腾讯云的OCR效果也更好些,上面👆的Tencent就识别成了Tencenf, 而腾讯云都是正确的。
在这里插入图片描述

效果总结

  1. tesseract-ocr 的优点是支持的语言特别多,多达100多种语言支持,缺点是对中文的支持不太友好。
  2. TrWebOCR 的优点是对中文的识别非常友好,缺点是对英文的识别不太够
  3. 腾讯云OCR 腾讯云的识别效果中英文都比较好,缺点是要付费,不顾腾讯云也有免费包,小量识别请求可以免费。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/351920.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

时尚高级实用,零跑C01满足各种用车需求

零跑C01在新能源车市场上销量可观且口碑较好&#xff0c;为什么消费者会相中这个国产车全域自主研发的新能源车呢&#xff1f;下面的介绍会给出答案。就其外观而言&#xff0c;零跑C01的外观定位于中大型轿车&#xff0c;在外观设计上充分考虑到美学观念。零跑给出了七个车身颜…

扬帆优配|日均客运量恢复,民航业加速复苏,外资买入2股超亿元

春运民航客运量康复至疫情前七成。 2月16日&#xff0c;民航局举行2月例行新闻发布会。会上介绍&#xff0c;自1月7日至2月15日&#xff0c;春运40天&#xff0c;民航运送旅客5523万人次&#xff0c;日均客运量138万人次&#xff0c;同比去年春运添加39%&#xff0c;康复至2019…

Lesson5.1---Python 之 NumPy 简介和创建数组

一、NumPy 简介 NumPy&#xff08;Numerical Python&#xff09;是 Python 的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵&#xff0c;比 Python 自身的嵌套列表&#xff08;nested list structure&#xff09;结构要高效的多&#xff08;该结构也可以用来表示…

【贰】嵌入式系统的分类

随手拍拍&#x1f481;‍♂️&#x1f4f7; 日期: 2022.08.31 地点: 杭州 介绍: 2022.08.31下午一点&#xff0c;在闷热的学校里实在是待不下去了&#xff0c;跑到了门口的钱塘江边散了一会儿步&#x1f6b6;正值盛夏&#xff0c;八月即将完结&#xff0c;日子越过越快&#x1…

FPGA MAX 10 10M50系列10M50DAF484C8G/10M50DAF484C7G/10M50DCF484C7G规格

介绍MAX 10器件是单芯片、非易失性低成本可编程逻辑器件(pld)&#xff0c;用于集成最优的系统组件集。MAX 10设备的亮点包括:内部存储双配置闪存用户闪存即时支持集成模数转换器(adc)支持Nios II单芯片软核处理器MAX 10设备是系统管理、I/O扩展、通信控制平面、工业、汽车和消费…

ant design vue 组件中经常会出现 label过长被盖住的情况

ant design vue 组件中经常会出现 label过长被盖住的情况&#xff0c;我还特地找了解决方法&#xff1a;当过长时让他换行显示&#xff0c;还写了一篇博客记录&#xff0c;今天同样是写代码&#xff0c;但并没有做特殊的设置&#xff0c;结果却出乎意料的正常&#xff0c;过长自…

2023美赛A题:收干旱影响的植物群落(MCM)思路Python代码

赛题目的:分析干旱程度与植物群落中物种数量的关系赛题解读&解题思路链接: (1)这道题的难点是寻找数据,如果能找到干旱程度的适应性代表的指标以及对应植物群落物种的数量,那这道题基本上是迎刃而解,只需要简单去搭建一个预测模型即可仿真 (2)目标是对马萨马拉这个…

基于dll注入 读取任务管理器中指定进程的详细信息

关键字 注入dll&#xff0c;遍历ListView 技术调研背景 QA测试程序时&#xff0c;往往需要关注进程的性能指标&#xff0c;比如&#xff1a;CPU&#xff0c;GPU&#xff0c;内存&#xff0c;显存。最终根据各个采样数据&#xff0c;生成基于时间轴的状态表&#xff08;类似任…

37.网络结构与模型压缩、加速-4

37.1 减少网络碎片化程度(分支数量) 模型中分支数量越少,模型速度越快 此结论主要是由实验结果所得。 以下为网络分支数和各分支包含的卷积数目对神经网络速度的影响。 实验中使用的基本网络结构,分别将它们重复10次,然后进行实验。实验结果如下: 由实验结果可知,随着网络…

【JVM与性能调优】JVM常用指令之Javap详解

一、JavaP 命令是什么&#xff1f; JavaP 命令是 Java 语言的一种工具 &#xff0c;Java中一种反汇编器&#xff01; 二、JavaP 命令的作用 帮助开发者深入了解 Java 编译器的机制显示字节代码含义显示编译类文件中的可访问功能和数据查看Java类文件中类和接口的内部结构显示…

Mybatis执行完新增操作后,对象的ID主键被修改了的原因【mybatis-spring-boot-starter开源项目的贡献者解答】

Mybatis执行完新增操作后&#xff0c;对象的Id主键被修改了的原因问题由来问题分析解决方案感谢问题由来 首先说下背景&#xff0c;项目的依赖是&#xff1a;mybatis-spring-boot-starter&#xff1a;1.3.2 进行新增操作后&#xff0c;一般来说入库就算完事了&#xff0c;但是除…

基础篇:04-Eureka服务注册与发现

目录 1.Eureka工程搭建启动 打开Idea-Service控制台 2.user-service接入并启动 2.1 引入pom依赖 2.2 更新配置文件 2.3 启动并查看Eureka信息 2.3 复制模拟多实例部署 3.order-service接入并启动 4.常见问题及解决方案 5.总结 6.推荐阅读资料 因前面提到Netflix相关…

webpack -- 无法将“webpack”项识别为 cmdlet

webpack : 无法将“webpack”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写&#xff0c;如果包括路径&#xff0c;请确保路径正确&#xff0c;然后再试一次。 1.检测是否是版本太高而只能使用脚手架进行打包 webpack4.x的打包已经不能用webpack 文件a …

phpStudy服务

1 概述 1.1 安装说明 1. 安装路径不能包含“中文”或者“空格”&#xff0c;否则会报错&#xff08;例如错误提示&#xff1a;Cant change dir to G:\\x65b0\x5efa\x6587\&#xff09;保证安装路径是纯净的&#xff0c;安装路径下不能有已安装的V8版本&#xff0c;若重新安装…

数据结构与算法基础-学习-12-线性表之顺序队

一、个人理解队列是线性表的衍生之一&#xff0c;具有先进先出的特性&#xff0c;在队尾进行插入操作&#xff0c;在队头进行删除操作。队列的存储结构分为两个大类&#xff0c;一种是顺序队&#xff0c;就是用数组实现。另一种就是链队&#xff0c;使用链表实现。顺序队存在真…

20基于主从博弈的智能小区代理商定价策略及电动汽车充电管理MATLAB程序

参考文档&#xff1a;《基于主从博弈的智能小区代理商定价策略及电动汽车充电管理》基本复现仿真平台&#xff1a;MATLABCPLEX/gurobi平台优势&#xff1a;代码具有一定的深度和创新性&#xff0c;注释清晰&#xff0c;非烂大街的代码&#xff0c;非常精品&#xff01;主要内容…

Vue3路由传参

vue3路由和vue2差别不是很大&#xff0c;不过在传参形式上略有改变 在Vue3中使用路由必须引入 useRouter 和 useRoute import { useRoute, useRouter } from vue-routerconst Router useRouter() //跳转const Route useRoute() //获取到值 同Vue2一样&#xff0c;query使用p…

实用调试技巧【下篇】

&#x1f534;本文章是在 Visual Studio 2022&#xff08;VS2022&#xff09;编译环境下进行操作讲解 文章目录3.2.调试的时候查看程序当前信息3.2.1.查看临时变量的值3.2.2.查看内存信息3.2.3.查看调用堆栈3.2.4.查看汇编信息&#x1f973;4.调试实例&#x1f973;5.如何写出&…

【笔记】数据异常检测与修复总结

文章目录一、异常种类1. 对于移动对象的数据异常2. 对于时序数据的异常检测二、异常数据清洗流程三、数据预处理四、异常检测算法五、异常修复算法六、漂移数据清洗一、异常种类 不同的研究对象&#xff0c;有着不同的异常分类方式 1. 对于移动对象的数据异常 异常数据信息&…

leaflet: 数据聚合,显示当前bounds区域中的点的名称列表(078)

第078个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中实现数据聚合的功能 ,左边列出右边可视区域内的marker的名称。这里主要用到了可视区域的范围以及contains函数。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方…