gpt4 book ai didi

r - R中的tesseract - 在黑色背景上读取白色字体

转载 作者:行者123 更新时间:2023-12-01 01:39:28 29 4
gpt4 key购买 nike

所以,我对 tesseract 还很陌生,有些人遇到了与我在这个论坛上遇到的类似问题,但我无法得到令人满意的解决方案,因此我发布了这个问题。

我有来自街头相机的照片,我想获得镜头的时间戳。剪掉时间戳后,它们看起来像这样:

Picture

我通过在 R 中使用 tesseract 来解决这个问题:

library(tesseract)
library(magick)
eng <- tesseract("eng")

input <- image_read("image from above")


使用基本的tesseract我得到:
input %>% tesseract::ocr(,engine = eng) 
# [1] "SRE SAA PRO 206197180731 17:33:88\n"

显然,这没有多大帮助。因此,在阅读了这个问题后,我尝试了这个:
text <- input %>%
image_resize("2000x") %>%
image_convert(type = 'Grayscale') %>%
image_trim(fuzz = 40) %>%
image_write(format = 'png', density = '300x300') %>%
tesseract::ocr()

cat(text)

# es bt i deen | ee) eee i ae 2s ee ee ee eee ec ee |


这个结果就更糟了,实在是令人沮丧。
我如何得到正确的结果?热烈欢迎任何帮助:)

编辑

@Max Teflon 回答了这个例子的问题。但是,我意识到有些图像仍然被错误地读取,例如

enter image description here

enter image description here

谁能进一步改进他的解决方案?

最佳答案

多么好的问题啊!玩起来真的很有趣。
我发现此解决方案适用于您的示例:


library(tesseract)
library(magick)

eng <- tesseract("eng")

input <- image_read("/image/0QzhP.jpg") %>%
.[[1]] %>%
as.numeric() # cause numerics are just easier to work with
image_read(ifelse(input <.9, 1, 0) ) # changing every non-white pixel to white and every white pixel to black

到目前为止一切顺利,这是黑白版:


只是试图对这个进行 ocr 并不完全有效,所以我尝试改变它的大小:


image_read(ifelse(input <.9, 1, 0) ) %>%
image_resize('500x') %>% # make it smaller to work around the errors
tesseract::ocr()
#> [1] "TLC200 PRO 2019/10/31 17:33:00\n"

调整大小和对比部分只是玩弄的结果。如果解决方案在其余图片上效果不佳,您可能需要更改它。

创建于 2020-01-15 由 reprex package (v0.3.0)

关于r - R中的tesseract - 在黑色背景上读取白色字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59750745/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com