簡體   English   中英

OCR應用前的圖像清潔

[英]Image cleaning before OCR application

我在過去的幾個小時里一直在試驗PyTesser,這是一個非常好的工具。 我注意到有關PyTesser准確性的一些事情:

  1. 帶有圖標,圖像和文本的文件 - 准確率為5-10%
  2. 僅包含文本的文件(圖像和圖標已擦除) - 准確率為50-60%
  3. 帶拉伸的文件(這是最好的部分) - 在x或y軸上面的2)拉伸文件將精度提高了10-20%

顯然Pytesser並不關心字體尺寸或圖像拉伸。 雖然有很多關於圖像處理和OCR的理論需要閱讀,但是在應用PyTesser或其他庫之前,是否有任何標准的圖像清理程序(除了擦除圖標和圖像),而不管語言是什么?

...........

哇,這篇文章現在已經很老了。 在過去的幾天里,我再次開始研究OCR。 這次我扔掉了PyTesser並使用了Tesseract引擎和ImageMagik。 直截了當地說,這就是我發現的:

1) You can increase the resolution with ImageMagic(There are a bunch of simple shell commands you can use)
2) After increasing the resolution, the accuracy went up by 80-90%.

因此,Tesseract Engine毫無疑問是市場上最好的開源OCR引擎。 此處不需要事先清潔圖像。 需要注意的是,它不適用於包含大量嵌入圖像的文件,而且我沒有找到一種方法來訓練Tesseract忽略它們。 此外,圖像中的文本布局和格式也有很大的不同。 它只適用於帶有文本的圖像。 希望這有幫助。

不確定你的意圖是否用於商業用途,但是如果你在一堆像圖像上執行OCR,這會產生奇跡。

http://www.fmwconcepts.com/imagemagick/textcleaner/index.php

原版的 原版的

在使用給定參數進行預處理之后。

在使用給定參數進行預處理之后。

事實證明, tesseract wiki有一篇文章以我能想象的最佳方式回答這個問題:


(初步答案,僅供記錄)

我沒有使用PyTesser ,但我已經用tesseract做了一些實驗(版本: 3.02.02 )。

如果在彩色圖像上調用tesseract,則它首先應用全局Otsu方法對其進行二值化,然后在二進制(黑白)圖像上運行實際字符識別。

圖片來自: http//scikit-image.org/docs/dev/auto_examples/plot_local_otsu.html

大津的門檻圖

可以看出,“全球大津”可能並不總能產生理想的結果。

為了更好地理解tesseract'看到'是將Otsu的方法應用於您的圖像,然后查看生成的圖像。

總之:提高識別率的最直接的方法是自己對圖像進行二值化(最有可能通過反復試驗找到好的閾值) ,然后將這些二值化圖像傳遞給tesseract

有人非常友好地發布了tesseract的api文檔 ,因此可以驗證以前有關處理管道的語句: ProcessPage - > GetThresholdedImage - > ThresholdToPix - > OtsuThresholdRectToPix

我知道這不是一個完美的答案。 但我想與您分享我從PyCon 2013中看到的可能適用的視頻。 它有點缺乏實現細節,但對於如何解決/改善您的問題可能只是一些指導/啟發。

鏈接到視頻

鏈接到演示文稿

如果您決定使用ImageMagick預處理源圖像。 是一個問題,指出你很好的python綁定。

在旁注。 Tesseract非常重要。 你需要訓練它,否則它不會像它能夠那樣好/准確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM