Linux 系統上的 OCR

Linux 系統上的 OCR

我一直發現光學字元辨識技術在開源系統上落後。我也看過奧克羅普斯項目從嬰兒期起。我已經嘗試過我所聽說的 Linux 上最好的 OCR 引擎,超立方體,並發現它嚴重缺乏商業文件。還有其他更有前景的 OCR 實現嗎?解讀筆跡這更有希望的目標又如何呢? *nix 系統在這個領域有什麼可能?

答案1

超立方體

截至 2020 年,最好的開源 OCR 軟體是超立方體4以其新的LSTM神經網路OCR模型。其 OCR 效能比版本 3 中使用的先前 OCR 模型好得多。

範例(output.pdf為掃描的德語文件產生帶有文字圖層的 PDF 檔案):

$ echo page-*.png > input.list
$ tesseract --oem 1 -l deu input.list output pdf

--oem 1啟用 LSTM 引擎)

將識別的文字列印到標準輸出:

$ tesseract --oem 1 -l deu page page-0001.png stdout

列出已安裝的語言:

$ tesseract --list-langs

以可下載的形式提供多種語言/腳本的支持訓練資料集,例如甚至還有 Fraktur 的資料集。

透過新的 LSTM 模型,Tesseract 從奧克羅普斯研究項目。

即使在高品質的輸入圖像上,Tesseract 版本3 的性能也相對較差,即它經常錯誤地檢測灰塵像素中的單個字元(在任何文字上下文之外),並且很容易在眾所周知的單字中引入單個字元錯誤。

楔形文字

楔形文字OCR 效能並沒有那麼糟糕,但它沒有得到積極維護(最後一次發佈於 2011 年,版本 1.1)並且很容易崩潰並存在其他一些問題:

  • 分段錯誤各種套餐發布
  • 它的佈局演算法被簡單地破壞了,即在一列文檔中,段落經常隨機地打亂
  • 它不會因未知選項而出錯

您可以像這樣停用佈局演算法:

$ cuneiform --singlecolumn -l ger -f text -o foo.txt image-0001

-l指定來源文檔的語言)

奧克拉德

奧克拉德範例呼叫:

$ ocrad -F utf8 image-0001

文字預設列印到標準輸出。

在商業文件中,它遺漏了一個帶有下劃線的單詞,而 cuneiform/tesseract/gocr 卻沒有。

Ocrad 手冊包含以下內容的部分:使用的演算法,例如:

5) 偵測字元並將其按行分組。
6) 辨識字元(非常臨時;每個字元一種演算法)。
7) 修正一些歧義(將 l.OOO 轉換為 1.000 等)。

GOCR

GOCR範例呼叫:

$ gocr image-0001

文字預設列印到標準輸出。

GOCR 文件沒有包含有關 OCR 使用哪些模型/方法的詳細資訊。

硬體

薩內對某些自動送稿機 (ADF) 掃描器有很好的支持,例如願景富士通那些。

Sane 中包含一個scanimage命令列程序,您可以使用它來建立腳本化掃描管道(請參閱例如我的adf2pdf.py腳本)。

答案2

我找到了一個StackOverflow 上有類似的問題Asprise OCR SDK,連結之一商業的產品,擁有 Linux 版本。

答案3

... OCR 不僅僅是「僅字元辨識」。影像處理、預處理 - 頁面/佈局分析以尋找文字、圖像、表格或條碼。為了識別,你必須處理不同的字體、大小和語言。這很重要,因為要獲得好的結果,您必須使用字典和語言定義。最後,人們期望有比文字更多的匯出選項(例如 XML、RTF 或可搜尋的 PDF)。 SDK 有一些商業選項,但它們並不便宜而且免費。

最近我發現一個ABBYY 適用於 Linux 的 CLI OCR。有 100 頁的免費試用版。

答案4

如果你有預算的話我強烈推薦適用於 Linux 的 ABBYY FineReader Engine CLI。我們公司已經在我們的網路應用程式中使用它一年了,我們計劃更新許可證。非常好的識別質量,命令列介面,多語言識別。

相關內容