Python 识别图片文字的效果是不是很差?

2021-12-06 00:34:34 +08:00
 zictos

试了一下 pytesseract 模块,好像很多文字都识别不了,只有一些纯色背景并且颜色反差比较大的才比较容易识别出来。
用百度的文字识别 api 接口大部分文字都能识别出来,效果挺好的,但有点担心图片内容的安全问题。
利用程序识别最多只能达到 pytesseract 模块这种程度的效果了吗?

10715 次点击
所在节点    Python
129 条回复
zictos
2021-12-06 02:01:06 +08:00
@rpman #19 对,好像有那种离线的文字识别的商业软件,效果感觉还可以。但这种程度的应该不可能免费

@deplivesb #20 一定说这么清楚吗?市面也有 ocr 类的商业软件,而且是离线的,效果不说多好,肯定比 pytesseract 模块好是肯定的,那别人是怎么做到通用的?我的意思是看类似的东西能不能通过 python 简单实现,有没有人写类似的东西并且直接可以作为 python 模块安装,当然这种免费的一般是不太可能有,实在没有就算了。
另外如你所说,那 pytesseract 模块到底算一个什么样的东西呢?都说可以文字识别,那它是什么定位。只是一个玩具吗?的确我试用下来感觉只是一个玩具,但效果更好的模块也是理论上可能存在的,在于有没有提供,我一开始不太懂不是很正常吗?万一真的有效果更好的呢?
imn1
2021-12-06 02:05:32 +08:00
其实无关什么言辞漏洞,而是你本身缺乏知识,所以说出了标题那样的话
pytesseract 是 python + tesseract 写出来的,只是 python 调用了 tesseract OCR 实现而已,不是纯 python 的算法
那么如果用 python + baidu api 写出来的呢?两个都是 python ,那你的标题怎么来的?

java + tesseract 和 java + baidu api 能不能说 “java 识别图片文字的效果是不是很差?”

事实上,tesseract OCR 是 C++写出来的 https://github.com/tesseract-ocr/tesseract ,那又该怎么说呢?

最后,python + opencv 等等很多算法,也能实现文字识别,区别只是训练了多少模型,与语言本身没多大关系
因为语言参与的工作量可能连 1%都不到,99+%都是训练模型
只要模型出来了,识别的效果就几乎全部和这个模型相关
tesseract OCR 只是“个人”项目,训练量(尤其训练样本的数量)是无法和 baidu 比的,区别就在这里
zictos
2021-12-06 02:17:13 +08:00
@imn1 #22 我怎么就不知道 tesseract ?用 python 那个模块还要安装 tesseract 的。那这些是需要我关心的吗?
如果你非得认为我不知道百度 api 是用程序写的,非得以为我认为百度 api 是因为百度牛逼,所以百度才能不通过程序直接创造出这样一个东西。那我也没办法。
你自己说到了“训练量”,那 python 就可能存在比 tesseract OCR 训练量更高的东西啊!也可能没有。那我不知道不是很正常吗?
像 opencv ,我就感觉非常好用。那文字识别领域万一也真的有非常牛逼并且能直接勉强使用的东西存在呢?所以的确是可能存在的,看了那么多回复,我现在知道了是不存在的,但“未来”也可能会存在。
zictos
2021-12-06 02:25:16 +08:00
@imn1 #22 opencv 最简单的就是模板匹配,就是在大图片上查找指定图像是否存在,这个可用性非常高。
而 python 模块使用的 tesseract 却可用性非常低。所以是否有更好的离线 OCR 引擎的确是个问题,也的确是可能存在的。
imn1
2021-12-06 02:37:28 +08:00
@zictos #23
python 是语言,tesseract 是模型,baidu api 是模型集,都不是一类东西,不能比较,不存在谁比谁差的问题
因为任何语言都可以调用后两者,而这时说那个语言差就很奇怪了

个人或小团队能搜集的样本,和一个搜索引擎能收集的样本数量,说这两个分不出哪个多,说不过去吧

算了,感觉我在跟一个主张语文、数学、哲学谁更强的人在讨论,不在一个频道
f165af34d4830eeb
2021-12-06 03:55:57 +08:00
python: 人在家中坐,锅从天上来。
zictos
2021-12-06 04:07:10 +08:00
@imn1 #25 我标题中不是一个观点,只是一个提问。我主张什么了?并且我很快用 pytesseract 模块举了例子,说明我为什么会提这个问题。
客观上来说理解内容要根据上下文,所以我已经明确指出了是“pytesseract 模块”识别文字的效果差。问题描述的最后一行也只是想了解到是否有更好的直接可用的方案,并没有完全对 python 持否定态度,打心底里是认为有更好的直接可用的方案的。倘若真的有比 pytesseract 模块效果更好的,那我的标题就直接不成立了,至于其他自己写模型之类的方案也并没有完全否定,归根结底都只是一个疑问,不懂就要问也有错?
而且明明我就没有任何贬低 python 的意思,我不知道还很多人抓着标题不放干嘛?这样有什么意思吗?前面该解释的都解释了,倘若我真的冥顽不灵,倘若我真的坚持认为 python 识别图片文字的效果很差这个观点,那要喷我也就罢了。难道这些人在现实中就是这么为人处世的吗?本来就是一个误会,就算不是误会,就算我真的一开始就持“python 识别图片文字的效果很差”这个观点,但后面认识到自己这个观点是错的,这样不也应该结束了吗?难道还要继续去喷?
hello2090
2021-12-06 04:40:51 +08:00
试试 C 语言我,听说性能比较好
binux
2021-12-06 05:10:56 +08:00
@zictos 你没有理解编程语言,引擎,模型,训练数据之间的区别,无法区分效果的好坏是因为编程语言,引擎,模型还是训练数据的不同。于是你拿着模型和训练数据的区别去比较编程语言,引擎的好坏。
zictos
2021-12-06 05:23:35 +08:00
@binux #29 事实上我并不是比较编程语言的好坏,我也没认为某个语言比 python 更好或更差之类的。
假设就拿语言原生支持某些功能来说,比如 php 开发 web 更快,这样能说明 php 就比 python 一定更好吗?实际只是 php 更加针对 web 方向而已。
如果现在假设有一个语言官方本身就支持文字识别,只要一两行代码就行。那能说这个语言最终在文字识别的功能上一定优于 python 吗?所以就算 python 官方不支持文字识别或者现在 python 的文字识别已有的方案的效果都不好,也不代表 python 就比其他语言差啊。
也就是说即便我说了“python 文字识别效果差”之类的话,也不代表就是在否定这门语言,更何况我根本没说,我只是在提问,而且这其中完全是一个误会。另外就是不代表每个学习编程语言的都要去深刻理解引擎、模型、训练数据之类的,大部分时候只要按官方提供的语法来就行。
总之,感觉会一直不停的有人来误会。
lyoe
2021-12-06 06:12:45 +08:00
只能说 LZ 给自己开了一个地图炮。
1. 把编程语言和模型混为一谈;就像 #22 说的那样,太不专业;
2. 想要更好的效果,最好 Google 或者 github 上先多搜索;当伸手党也不是不行,上来就把 pytesseract 说成天花板,也别怪别人吐槽你。
dayeye2006199
2021-12-06 07:10:16 +08:00
Lz 的需求建议直接买 API 吧。
自己弄的话也得简单讲一下需求把,文件类型是什么?合同身份证文件还是带文字的图片?识别的内容是什么,文字表格还是啥?对精度需求是咋样的?

上来调个包就搞定了,这是不让这么多做 ocr 的公司吃饭啊
xinghen57
2021-12-06 07:42:28 +08:00
感觉 lz 的发帖风格和我刚毕业认识的一女孩子很像
ozuikai
2021-12-06 07:49:51 +08:00
提问的艺术

Python 的 OCR 是不是很差 🚫
Python 有哪些好用的 OCR 模块 /算法 ✅
greatx
2021-12-06 08:34:39 +08:00
paddleOCR 试一下
ispinfx
2021-12-06 08:36:31 +08:00
这个标题就是纯属找骂的…
Latin
2021-12-06 08:41:31 +08:00
百度 paddleocr 京东 easyocr
Accessing
2021-12-06 08:51:59 +08:00
这个标题实际上就隐含了重大的错误,即 Python 本身有 OCR 功能,实际上这个功能在标准库中根本就没有,这就意味着这个标题本来就是错误的。

效果好不好主要取决于你调用什么东西,而不是你用什么语言调用,这个真的无所谓。
linnil
2021-12-06 08:53:09 +08:00
微信好垃圾啊,我摇一摇竟然不能把所有人的零钱转到我手上。
微信不止能支付,微信还能看健康码🤔。
至于你说你为何需要知道 pytesseract 是 python+tesseract 组成的,直接用不就好了?买电脑你可以买成品,也可以自己组装。开源的你嫌不好,商业的你嫌要钱,那就只能自己搞,自己搞你不理解这些谁了解这些?
我不去赚钱,等着微信出摇一摇把大伙的钱都转我手上它不香么?
ncepuzs
2021-12-06 08:57:46 +08:00
要么买大厂的 API ,要么就自己训练模型咯,这种通用模块换任一门语言效果不都是勉强能用?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/820234

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX