OpenCv不读取图像的元数据。因此,我们无法获得图像的dpi。当有人在stackoverflow中询问与dpi相关的ocr问题时
大多数回答说我们不需要新闻部。我们只需要一个像素大小
Changing image DPI for usage with tesseract
Change dpi of an image in OpenCV
在一些没有人询问dpi和需要提高OCR精度的地方,有人想到将dpi设置为300将提高精度
Tesseract OCR How do I improve result?
Best way to recognize characters in screenshot?
还有一件事,Tesseract在他们的官方网页上说
Tesseract works best on images which have a DPI of at least 300 dpi, so it may be beneficial to resize images.
在谷歌搜索之后,我发现了以下东西
下面引用的一条来自tesseract官方页面。 是否有最小/最大文本大小?(它不会读取屏幕文本!)
There is a minimum text size for reasonable accuracy. You have to consider resolution as well as point size. Accuracy drops off below 10pt x 300dpi, rapidly below 8pt x 300dpi. A quick check is to count the pixels of the x-height of your characters. (X-height is the height of the lower case x.) At 10pt x 300dpi x-heights are typically about 20 pixels, although this can vary dramatically from font to font. Below an x-height of 10 pixels, you have very little chance of accurate results, and below about 8 pixels, most of the text will be “noise removed”.
Using LSTM there seems also to be a maximum x-height somewhere around 30 px. Above that, Tesseract doesn’t produce accurate results. The legacy engine seems to be less prone to this (see https://groups.google.com/forum/#!msg/tesseract-ocr/Wdh_JJwnw94/24JHDYQbBQAJ).
从这些事情中,我得到了一个解决方案,那就是, 我们需要一个10到12磅字体大小的文字的OCR。这意味着如果我们有120 ppi(每英寸像素),那么我们需要一个20像素大小的高度。如果我们有300 ppi,那么我们需要一个50像素的文本高度
如果Opencv没有读取dpi信息。通过OpenCV的imread方法获得的图像的tesseract输入的默认dpi值是多少
Tesseract是否在内部根据图像的dpi调整图像大小
如果我使用opencv调整图像大小,那么如果在内部根据dpi调整大小,我需要将dpi设置为300 dpi。在OpenCV+PyteSeract中设置DPI的最简单方法是什么?但是我们可以用PIL来做这件事
回答您的问题:
DPI只有在扫描文档时才真正相关——它是一种测量每英寸有多少点用于表示扫描图像的方法。一旦tesseract处理图像,它只关心像素
据我所知不是这样
你链接到的答案与写图像有关,而不是读图像
我想我理解你想表达的核心意思。您正试图提高与字体/文本大小相关的结果的准确性
一般来说,tesseract seems to work best on text that is about 32 px tall.
手动调整大小
如果您正在处理一小组图像或一组一致的图像,则可以手动调整这些图像的大小,使其具有大约32像素高的大写字母。从理论上讲,这将在tesseract中产生最佳结果
自动调整大小
我使用的是不一致的数据集,所以我需要一种自动调整图像大小的方法。我要做的是找到图像中文本的边界框(使用tesseract本身,但可以使用EAST或类似的工具)
然后,我计算这些边界框的中间高度。使用它,我可以计算需要调整图像大小多少,以便图像中大写字母的中间高度约为32 px高
一旦我调整了图像的大小,我会重新运行tesseract,希望一切顺利。耶
希望能有所帮助!:)
奖励:我共享了这个函数的源代码in this Gist
相关问题 更多 >
编程相关推荐