您可以使用Tesseract OCR引擎在Linux命令列上從影象中提取文字。它快速、準確,可以使用大約100種語言。下面是如何使用它。
光學字元識別(OCR)是一種在影象中觀察和查詢單詞,然後將其提取為可編輯文字的能力。對於人類來說,這項簡單的任務對於計算機來說是非常困難的。至少可以說,早期的努力是笨拙的。如果字型或大小不符合OCR軟體的要求,計算機常常會感到困惑。
儘管如此,這一領域的先驅者仍然受到高度尊重。如果您丟失了文件的電子副本,但仍有列印版本,OCR可以重新建立可編輯的電子版本。即使結果不是100%準確,這仍然是一個偉大的節省時間。
手工整理一下,你就能把檔案拿回來了。人們原諒了它所犯的錯誤,因為他們理解OCR軟體包所面臨的任務的複雜性。另外,這比重新輸入整個文件要好。
從那以後情況有了很大改善。由Hewlett-Packard編寫的Tesseract OCR應用程式始於上世紀80年代,是一種商業應用程式。它在2005年是開源的,現在得到了谷歌的支援。它具有多語言功能,被認為是最準確的OCR系統之一,您可以****它。
要在Ubuntu上安裝Tesseract OCR,請使用以下命令:
sudo apt-get install tesseract-ocr在Fedora上,命令是:
sudo dnf install tesseract在Manjaro上,您需要鍵入:
sudo pacman -Syu tesseract我們將對Tesseract OCR提出一系列挑戰。我們的第一張包含文字的影象是從通用資料保護條例背誦63中提取的。讓我們看看OCR是否能讀到這個(保持清醒)。
這是一個棘手的影象,因為每個句子都以一個微弱的上標數字開頭,這在立法檔案中很典型。
我們需要給tesseract命令一些資訊,包括:
我們的影象檔名為“背誦63.png”,其解析度為150 dpi。我們要從中建立一個文字檔案,名為“朗誦.txt.”
我們的命令是這樣的:
tesseract recital-63.png recital --dpi 150結果很好。唯一的問題是上標太模糊,無**確閱讀。一個好的影象質量是至關重要的,以獲得良好的效果。
tesseract將上標數字解釋為引號()和度數符號(°),但實際文字已被完美地提取(影象右側必須修剪以適應此處)。
最後一個字元是一個十六進位制值為0x0C的位元組,這是一個回車符。
下面是另一張圖片,文字大小不同,粗體和斜體都有。
此檔案的名稱為“粗體”-斜體.png“我們要建立一個名為”粗體.txt所以我們的命令是:
tesseract bold-italic.png bold --dpi 150這一個沒有造成任何問題,文字被完美地提取出來。
Tesseract OCR支援大約100種語言。要使用一種語言,必須先安裝它。當您在列表中找到要使用的語言時,請注意其縮寫。我們將安裝對威爾士的支援。它的縮寫是“cym”,是“Cymru”的縮寫,意思是威爾士語。
安裝包名為“tesseract ocr-”,末尾標記了語言縮寫。要在Ubuntu中安裝威爾士語檔案,我們將使用:
sudo apt-get install tesseract-ocr-cym下面是帶有文字的影象。這是威爾士國歌的第一節。
讓我們看看Tesseract OCR是否能勝任這個挑戰。我們將使用-l(語言)選項讓tesseract知道我們要使用的語言:
tesseract hen-wlad-fy-nhadau.png anthem -l cym --dpi 150tesseract處理得非常完美,如下面提取的文字所示。天哪,特塞拉特OCR。
如果文件包含兩種或兩種以上的語言(例如從威爾士語到英語的詞典),可以使用加號(+)告訴tesseract新增另一種語言,如下所示:
tesseract image.png textfile -l eng+cym+fratesseract命令設計用於處理影象檔案,但它無法讀取PDF。但是,如果需要從PDF中提取文字,可以先使用另一個實用程式生成一組影象。單個影象將表示PDF的單個頁面。
您需要的pdftppm實用程式應該已經安裝在您的Linux計算機上。我們將使用的PDF作為示例,它是Alan Turing關於人工智慧的開創性論文“計算機器和智慧”的副本
我們使用-png選項指定要建立png檔案。我們的PDF檔名是“圖靈.pdf”我們將影象檔案稱為“turing-01.png”、“turing-02.png”等等:
pdftoppm -png turing.pdf turing要使用單個命令對每個影象檔案執行tesseract,我們需要使用for迴圈。對於我們的每一個“圖靈”-nn.png格式,檔案我們執行tesseract,並建立一個名為“text-”的文字檔案加上“turing nn”作為影象檔名的一部分:
for i in turing-??.png; do tesseract "$i" "text-$i" -l eng; done;要將所有文字檔案合併為一個文字檔案,我們可以使用cat:
cat text-turing* > complete.txt那,怎麼辦?很好,你可以看到下面的。不過,第一頁看起來很有挑戰性。它有不同的文字樣式和大小,裝飾。頁面右邊緣還有一個垂直的“水印”。
但是,輸出接近原始值。顯然,格式已丟失,但文字是正確的。
垂直水印在頁面底部被轉錄成一行亂碼。文字太小,tesseract無法準確閱讀,但很容易找到並刪除它。最糟糕的結果是每行末尾都出現了錯誤的字元。
奇怪的是,在第二頁的問題和答案列表開始的單個字母被忽略了。PDF中的部分如下所示。
正如您在下面看到的,問題仍然存在,但是每行開頭的“Q”和“A”都丟失了。
圖表也不會被正確轉錄。讓我們看看當我們試圖從圖靈PDF中提取下面所示的內容時會發生什麼。
正如您在下面的結果中看到的,字元被讀取了,但是圖表的格式丟失了。
再次,tesseract與小尺寸的下標作鬥爭,它們被錯誤地呈現。
不過,公平地說,這仍然是一個好結果。我們無法提取直截了當的文字,但後來,故意選擇了這個示例,因為它提出了一個挑戰。
OCR不是你每天都需要使用的東西。然而,當需要的時候,很高興知道你有一個最好的OCR引擎在你的支配之下。
... 本文將向您展示如何使用Python程式從命令列設定一個Arduino UNO(儘管任何與Arduino相容的板都可以在這裡工作)。本教程是為Windows10編寫的,但也適用於Mac和Linux。你甚至可以使用這個工作...
...任務要完成,而且你做這些任務的時間有限。你也是Linux使用者嗎?在這種情況下,您可能需要檢視這些Linux待辦應用程式和擴充套件,以幫助您保持專注。 ...
... 文字編碼是其中最基本的,它描述了位元組資料如何表示螢幕上顯示的字元。如今,現代系統認可UTF標準,這是一種編碼方案,包括世界上大多數語言的字元。 Locale是那些現代作業系統處理UI中不同語言...
您是否需要將手寫筆記數字化以編輯或索引它們?或者你想從手寫引文的圖片中複製文字?你需要的是一種光學字元識別(OCR)工具。 ...
... 下面介紹如何在你的樹莓皮上安裝DietPi,以及為什麼它會變成你最喜歡的樹莓皮。 ...
...第五項,從whois的響應中提取每個域的過期日期。 相關:如何在Linux上使用awk命令 方便和自動化 是的,你也可以在網上進行whois查詢。但是,在終端視窗和指令碼中使用whois命令提供了方便性和靈活性,並使您可以選擇自動化一...
googledrive仍然沒有正式的Linux客戶端,但是您可以直接從命令列使用rclone實用程式備份到googledrive。我們教你怎麼做。 linux上的google drive在哪裡? 儘管2012年承諾Linux支援“很快就會到來”,但沒有跡象表明Google會為GoogleDrive生產...