如何使用tesseract從linux命令列執行ocr

您可以使用Tesseract OCR引擎在Linux命令列上從影象中提取文字。它快速、準確,可以使用大約100種語言。下面是如何使用它。...

您可以使用Tesseract OCR引擎在Linux命令列上從影象中提取文字。它快速、準確,可以使用大約100種語言。下面是如何使用它。

光學字元識別

光學字元識別(OCR)是一種在影象中觀察和查詢單詞,然後將其提取為可編輯文字的能力。對於人類來說,這項簡單的任務對於計算機來說是非常困難的。至少可以說,早期的努力是笨拙的。如果字型或大小不符合OCR軟體的要求,計算機常常會感到困惑。

儘管如此,這一領域的先驅者仍然受到高度尊重。如果您丟失了文件的電子副本,但仍有列印版本,OCR可以重新建立可編輯的電子版本。即使結果不是100%準確,這仍然是一個偉大的節省時間。

手工整理一下,你就能把檔案拿回來了。人們原諒了它所犯的錯誤,因為他們理解OCR軟體包所面臨的任務的複雜性。另外,這比重新輸入整個文件要好。

從那以後情況有了很大改善。由Hewlett-Packard編寫的Tesseract OCR應用程式始於上世紀80年代,是一種商業應用程式。它在2005年是開源的,現在得到了谷歌的支援。它具有多語言功能,被認為是最準確的OCR系統之一,您可以****它。

安裝tesseract ocr

要在Ubuntu上安裝Tesseract OCR,請使用以下命令:

sudo apt-get install tesseract-ocr

007Ys3FFgy1gp4kp6x35xj30hy01ljr9

在Fedora上,命令是:

sudo dnf install tesseract

007Ys3FFgy1gp4kp8yl7sj30hy01l0si

在Manjaro上,您需要鍵入:

sudo pacman -Syu tesseract

如何使用tesseract從linux命令列執行ocr

使用tesseract ocr

我們將對Tesseract OCR提出一系列挑戰。我們的第一張包含文字的影象是從通用資料保護條例背誦63中提取的。讓我們看看OCR是否能讀到這個(保持清醒)。

如何使用tesseract從linux命令列執行ocr

這是一個棘手的影象,因為每個句子都以一個微弱的上標數字開頭,這在立法檔案中很典型。

我們需要給tesseract命令一些資訊,包括:

  • 要處理的影象檔案的名稱。
  • 它將建立用於儲存提取文字的文字檔案的名稱。我們不必提供副檔名(它總是.txt)。如果已存在同名檔案,則會覆蓋該檔案。
  • 我們可以使用--dpi選項告訴tesseract影象的每英寸點數(dpi)解析度是多少。如果我們不提供dpi值,tesseract將嘗試找出它。

我們的影象檔名為“背誦63.png”,其解析度為150 dpi。我們要從中建立一個文字檔案,名為“朗誦.txt.”

我們的命令是這樣的:

tesseract recital-63.png recital --dpi 150

如何使用tesseract從linux命令列執行ocr

結果很好。唯一的問題是上標太模糊,無**確閱讀。一個好的影象質量是至關重要的,以獲得良好的效果。

如何使用tesseract從linux命令列執行ocr

tesseract將上標數字解釋為引號()和度數符號(°),但實際文字已被完美地提取(影象右側必須修剪以適應此處)。

最後一個字元是一個十六進位制值為0x0C的位元組,這是一個回車符。

下面是另一張圖片,文字大小不同,粗體和斜體都有。

如何使用tesseract從linux命令列執行ocr

此檔案的名稱為“粗體”-斜體.png“我們要建立一個名為”粗體.txt所以我們的命令是:

tesseract bold-italic.png bold --dpi 150

如何使用tesseract從linux命令列執行ocr

這一個沒有造成任何問題,文字被完美地提取出來。

如何使用tesseract從linux命令列執行ocr

使用不同的語言

Tesseract OCR支援大約100種語言。要使用一種語言,必須先安裝它。當您在列表中找到要使用的語言時,請注意其縮寫。我們將安裝對威爾士的支援。它的縮寫是“cym”,是“Cymru”的縮寫,意思是威爾士語。

安裝包名為“tesseract ocr-”,末尾標記了語言縮寫。要在Ubuntu中安裝威爾士語檔案,我們將使用:

sudo apt-get install tesseract-ocr-cym

如何使用tesseract從linux命令列執行ocr

下面是帶有文字的影象。這是威爾士國歌的第一節。

如何使用tesseract從linux命令列執行ocr

讓我們看看Tesseract OCR是否能勝任這個挑戰。我們將使用-l(語言)選項讓tesseract知道我們要使用的語言:

tesseract hen-wlad-fy-nhadau.png anthem -l cym --dpi 150

如何使用tesseract從linux命令列執行ocr

tesseract處理得非常完美,如下面提取的文字所示。天哪,特塞拉特OCR。

如何使用tesseract從linux命令列執行ocr

如果文件包含兩種或兩種以上的語言(例如從威爾士語到英語的詞典),可以使用加號(+)告訴tesseract新增另一種語言,如下所示:

tesseract image.png textfile -l eng+cym+fra

在PDF中使用tesseract ocr

tesseract命令設計用於處理影象檔案,但它無法讀取PDF。但是,如果需要從PDF中提取文字,可以先使用另一個實用程式生成一組影象。單個影象將表示PDF的單個頁面。

您需要的pdftppm實用程式應該已經安裝在您的Linux計算機上。我們將使用的PDF作為示例,它是Alan Turing關於人工智慧的開創性論文“計算機器和智慧”的副本

如何使用tesseract從linux命令列執行ocr

我們使用-png選項指定要建立png檔案。我們的PDF檔名是“圖靈.pdf”我們將影象檔案稱為“turing-01.png”、“turing-02.png”等等:

pdftoppm -png turing.pdf turing

如何使用tesseract從linux命令列執行ocr

要使用單個命令對每個影象檔案執行tesseract,我們需要使用for迴圈。對於我們的每一個“圖靈”-nn.png格式,檔案我們執行tesseract,並建立一個名為“text-”的文字檔案加上“turing nn”作為影象檔名的一部分:

for i in turing-??.png; do tesseract "$i" "text-$i" -l eng; done;

如何使用tesseract從linux命令列執行ocr

要將所有文字檔案合併為一個文字檔案,我們可以使用cat:

cat text-turing* > complete.txt

如何使用tesseract從linux命令列執行ocr

那,怎麼辦?很好,你可以看到下面的。不過,第一頁看起來很有挑戰性。它有不同的文字樣式和大小,裝飾。頁面右邊緣還有一個垂直的“水印”。

但是,輸出接近原始值。顯然,格式已丟失,但文字是正確的。

如何使用tesseract從linux命令列執行ocr

垂直水印在頁面底部被轉錄成一行亂碼。文字太小,tesseract無法準確閱讀,但很容易找到並刪除它。最糟糕的結果是每行末尾都出現了錯誤的字元。

奇怪的是,在第二頁的問題和答案列表開始的單個字母被忽略了。PDF中的部分如下所示。

如何使用tesseract從linux命令列執行ocr

正如您在下面看到的,問題仍然存在,但是每行開頭的“Q”和“A”都丟失了。

如何使用tesseract從linux命令列執行ocr

圖表也不會被正確轉錄。讓我們看看當我們試圖從圖靈PDF中提取下面所示的內容時會發生什麼。

如何使用tesseract從linux命令列執行ocr

正如您在下面的結果中看到的,字元被讀取了,但是圖表的格式丟失了。

如何使用tesseract從linux命令列執行ocr

再次,tesseract與小尺寸的下標作鬥爭,它們被錯誤地呈現。

不過,公平地說,這仍然是一個好結果。我們無法提取直截了當的文字,但後來,故意選擇了這個示例,因為它提出了一個挑戰。

當你需要的時候,一個很好的解決方案

OCR不是你每天都需要使用的東西。然而,當需要的時候,很高興知道你有一個最好的OCR引擎在你的支配之下。

  • 發表於 2021-04-01 21:39
  • 閱讀 ( 47 )
  • 分類:網際網路

你可能感興趣的文章

學習python?下面是如何複製檔案

...然需要採用某種方法來學習。因此,讓我們透過本文了解如何使用Python複製檔案。 ...

  • 發佈於 2021-03-11 10:45
  • 閲讀 ( 52 )

如何用python程式設計和控制arduino

... 本文將向您展示如何使用Python程式從命令列設定一個Arduino UNO(儘管任何與Arduino相容的板都可以在這裡工作)。本教程是為Windows10編寫的,但也適用於Mac和Linux。你甚至可以使用這個工作...

  • 發佈於 2021-03-11 16:20
  • 閲讀 ( 72 )

11 linux待辦應用程式、計時器和擴充套件,幫助您完成任務

...任務要完成,而且你做這些任務的時間有限。你也是Linux使用者嗎?在這種情況下,您可能需要檢視這些Linux待辦應用程式和擴充套件,以幫助您保持專注。 ...

  • 發佈於 2021-03-12 00:47
  • 閲讀 ( 68 )

使用以下技巧和技巧成為linux命令列高手

... 如何掌握linux命令列:最後的想法 ...

  • 發佈於 2021-03-12 10:19
  • 閲讀 ( 44 )

如何在linux下用任何語言編寫

... 文字編碼是其中最基本的,它描述了位元組資料如何表示螢幕上顯示的字元。如今,現代系統認可UTF標準,這是一種編碼方案,包括世界上大多數語言的字元。 Locale是那些現代作業系統處理UI中不同語言...

  • 發佈於 2021-03-15 04:25
  • 閲讀 ( 43 )

如何使用ocr將手寫影象轉換為文字

您是否需要將手寫筆記數字化以編輯或索引它們?或者你想從手寫引文的圖片中複製文字?你需要的是一種光學字元識別(OCR)工具。 ...

  • 發佈於 2021-03-18 01:59
  • 閲讀 ( 43 )

需要一個輕量級的樹莓派發行版嗎?試試dietpi!

... 下面介紹如何在你的樹莓皮上安裝DietPi,以及為什麼它會變成你最喜歡的樹莓皮。 ...

  • 發佈於 2021-03-19 08:20
  • 閲讀 ( 50 )

如何將python新增到windows path變數

... 如何手動將python新增到windows路徑 ...

  • 發佈於 2021-03-30 03:11
  • 閲讀 ( 85 )

如何在linux上使用whois命令

...第五項,從whois的響應中提取每個域的過期日期。 相關:如何在Linux上使用awk命令 方便和自動化 是的,你也可以在網上進行whois查詢。但是,在終端視窗和指令碼中使用whois命令提供了方便性和靈活性,並使您可以選擇自動化一...

  • 發佈於 2021-04-01 23:54
  • 閲讀 ( 43 )

linux下如何使用rclone備份google驅動

googledrive仍然沒有正式的Linux客戶端,但是您可以直接從命令列使用rclone實用程式備份到googledrive。我們教你怎麼做。 linux上的google drive在哪裡? 儘管2012年承諾Linux支援“很快就會到來”,但沒有跡象表明Google會為GoogleDrive生產...

  • 發佈於 2021-04-02 18:51
  • 閲讀 ( 50 )
bppbfdx
bppbfdx

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦