12個流行的開源免費OCR項目
物理世界和數(shù)字世界的信息轉換是數(shù)字化發(fā)展的一個技術內容。而光學字符識別(Optical Character Recognition:簡稱OCR)正是其中之一。
OCR是指電子設備(例如掃描儀或數(shù)碼相機)檢查紙上打印的字符,通過檢測暗、亮的模式確定其形狀,然后用字符識別方法將形狀翻譯成計算機文字的過程。OCR常常被用于:證件識別、車牌識別、pdf文檔轉換為Word、拍照識別、截圖識別、網絡圖片識別、無人駕駛、無紙化辦公、稿件編輯校對、物流分揀、文檔檢索、字幕識別、文獻資料檢索等領域。特別是在業(yè)務流程自動化領域OCR是RPA的一個重要技術組成,起到重要作用。
隨著AI技術的發(fā)展,目前開源市場出現(xiàn)了許多非常優(yōu)秀的OCR項目。下面介紹目前比較流行的開源OCR項目,這些項目能夠為您OCR技術選型或者OCR模型算法研究提供參考。
1.Tesseract
https://github.com/tesseract-ocr/tesseract
Tesseract是一個非常經典的開源OCR引擎,最初由Hewlett-Packard開發(fā),現(xiàn)在由Google維護。Tesseract以其準確性和多功能性而聞名,可以提取數(shù)據(jù)并將掃描的文檔、圖像和手寫文字轉換為機器理解的文本。Tesseract支持100多種語言,并兼容多種操作系統(tǒng),并且提供了非常方便的命令行界面。
優(yōu)勢:
- 準確性:Tesseract提供了非常高OCR準確性,特別是在打印文本和掃描文檔方面。
- 語言支持:Tesseract支持廣泛的語言,允許識別多種語言的文本,包括一些特殊語種,使其成為多語言應用的理想選擇。
- 持續(xù)改進:Tesseract的開源社區(qū)非?;钴S,能夠及時地更新升級項目、修復Bug、完善用戶反饋的性能需求等。
缺點:
- 復雜布局文檔識別:Tesseract在簡單布局的文檔上表現(xiàn)非常好,但在布局比較復雜的文檔上就需要額外的預處理或后續(xù)處理步驟。
- 手寫識別準確度:Tesseract在識別機器打印文本方面表現(xiàn)出色,但在手寫文本上的表現(xiàn)并不盡如人意,有時還不如一些專用手寫識別工具準確。
2.Tesseract.js
https://tesseract.projectnaptha.com/
Tesseract.js是一個基于TesseractOCR的Web瀏覽器OCR軟件。你可以在瀏覽器中使用它,并且非常易用。與Tesseract OCR一樣,它也支持多種語言,包括中文。
3.OCRopus
https://github.com/ocropus
OCRopus是由Google開發(fā)的OCR相關工具集合,它擴展了Tesseract OCR引擎的功能。它提供了布局分析、文本識別和樣本數(shù)據(jù)生成的高級功能。
另外,OCRopus可以從命令行通過指定輸入的圖像來執(zhí)行它。它會將識別的文本直接輸出到標準輸出,或者將其作為hOCR(基于HTML)代碼寫入文件,然后可以將其轉換為可搜索的PDF。如果需要更精確的控制,可以在命令行上指定選項來執(zhí)行特定操作。
優(yōu)勢:
- 布局分析:OCRopus在布局分析方面非常精確,使其成為具有復雜布局或多列結構文檔識別的理想選擇。
- 文本識別準確性:OCRopus通過利用Tesseract的精確OCR引擎和其他組件,能夠提高識別的準確性。
- 可定制性:OCRopus能夠生成用于訓練的樣本數(shù)據(jù),用于訓練自定義的OCR模型,從而在專業(yè)應用中實現(xiàn)更高可定制性和準確性。
缺點:
- 學習曲線:與獨立的OCR引擎相比,OCRopus由于其工具和組件的范圍比較廣,因此具有更陡峭的學習曲線。
- 資源密集型:OCRopus的高級功能可能需要更多的計算資源,這個可能需要較高的成本,并且也需要考慮項目對處理時間的要求。
4.GOCR
https://jocr.sourceforge.net/
GOCR是在GNU通用公共許可證下開發(fā)的開源OCR引擎。它能夠識別各種圖像文件格式中的文本內容,并支持多種語言和操作平臺。
雖然它的準確性可能無法超過其他OCR引擎,但GOCR的優(yōu)勢是非常簡單易用。
優(yōu)勢:
- 簡單性:GOCR的主要優(yōu)勢在于它的簡單性。該軟件提供了一個簡單易用的界面,適合那些喜歡簡單OCR解決方案而不需要大量配置或復雜設置的用戶。
- 多語言支持:GOCR支持多種語言,允許用戶從包含不同語言內容的圖像中提取文本。
缺點
- 準確性:雖然GOCR提供了基本的OCR功能,但其準確性可能無法與其他更高級的OCR引擎相媲美。
- 高級功能:GOCR專注于簡單的OCR任務,可能缺乏布局分析或專業(yè)識別算法等高級功能。因此,如果您需要高級功能,這個工具并不是很適合。
4. CuneiForm
CuneiForm是一個開源的OCR,專門用于將掃描的文檔和圖像轉換為可編輯的文本。 它的主要目標是提供準確的OCR結果,同時具有比較靈活的輸入源和輸出格式。CuneiForm還支持多種語言,并兼容各種操作系統(tǒng)。
優(yōu)勢:
- 準確性:CuneiForm以其從掃描圖像中識別文本的準確性而聞名,即使對于復雜的文檔的識別也非??煽?。
- 語言支持:CuneiForm支持多種語言,使用戶能夠從不同語言環(huán)境中的文檔中提取文本。
- 輸入和輸出靈活性:CuneiForm接受各種格式的掃描圖像,包括TIFF和JPEG。此外,還可以以TXT、HTML和PDF等格式輸出識別的文本,為進一步處理提供了靈活性。
缺點:
- 使用者界面:CuneiForm的用戶界面可能不像其他一些OCR工具那樣直觀或用戶友好。因此,您可能需要熟悉OCR軟件或文檔,才能有效地使用其功能。
- 定制化:雖然CuneiForm為一般OCR任務提供了準確的結果,但在可定制化或專業(yè)OCR要求方面存在局限性。
5.Ocrad
https://www.gnu.org/software/ocrad/
Ocrad以其簡單性和識別速度而聞名,它提供了一個輕量級的OCR解決方案,主要以識別印刷文本而聞名。它旨在提供一個簡單高效的OCR解決方案,側重文本識別提取的速度和易用性。
優(yōu)勢:
- 易用性和識別效率:Ocrad簡單的設計和輕量級的特性有助于其易用性和識別效率。特別適合用于快速和簡單的OCR解決方案需求。
- 打印文本識別:Ocrad擅長從掃描圖像中識別打印文本,可以從清晰且格式良好的打印文檔中識別提取出可靠的結果。
缺點:
- 缺乏高級功能:Ocrad的側重點在于基礎的OCR任務,它可能缺乏高級功能,例如布局分析或手寫識別等。
- 復雜文本和低質量圖像的準確性:在處理復雜的文本結構或低質量的掃描圖像時,Ocrad的準確性可能會降低。
6.Ocrad.js
http://antimatter15.com/ocrad.js/demo.html
Ocrad.js是一個基于Ocrad的瀏覽器的OCR軟件。在JavaScript中使用它。支持的圖像格式包括JPEG、PNG、GIF、BMP、SVG、NetBPM等。
它非常簡單易用,只需要通過調用OCRAD的函數(shù)即可實現(xiàn)對img標簽的識別。雖然在識別精度方面比Tesseract.js遜色,但Ocard的優(yōu)勢是它的模型文件比Tesseract小30倍以上。
7.GImage Reader
https://github.com/manisandro/gImageReader
GImage Reader工具它能夠識別多種語言以及各種圖像文件格式的文本,使其適合從掃描的文檔、屏幕截圖或者照片中提取文本;并且它提供了一個簡單直觀的用戶界面,允許您快速加載圖像并獲得文本結果。
優(yōu)勢:
- 友好的用戶界面:GImage Reader的界面非常直觀易用,用戶可以輕松訪問,能夠輕松加載圖像并獲取結果。
- 多語言支持:GImage Reader支持多種語言,允許您從包含不同語言內容的圖像中提取文本。
缺點:
- 缺乏高級功能:GImage Reader主要專注于比較基本的OCR任務,如果需要更加專業(yè)的內容識別,它就不適合了。
- 準確度和性能:雖然GImage Reader可用于基本的OCR任務,但其準確性和性能可能會受到圖像質量和文本復雜性的影響。
8.Capture2Text
https://capture2text.sourceforge.net/
Capture2Text是一個基于命令行的Windows OCR軟件。它支持多種語言,包括日語。它不僅能識別水平的字符,還能識別垂直的字符。可以在你需要的時候使用windows命令行調用OCR命令,識別出的文本將被保存進剪貼板。
9.NDLOCR
https://github.com/ndl-lab
NDLOCR日本國立國會圖書館開源的ocr項目,比較適合古籍中一些復雜排版的ocr識別。比較適合日本語言的識別。
另外,它也支持在識別的文本中備注漢字讀音、刪除非字符,以及在廣告區(qū)域讀取字符的功能。還采取了一些有趣的舉措,例如:根據(jù)年齡提高識別準確性。
項目只適合研究學習,至于實際的漢字識別用場景難以使用。
10.OCRmyPDF
https://github.com/ocrmypdf/OCRmyPDF
OCRmyPDF是一個專門用于PDF的OCR識別軟件,它能夠將識別到的文本信息作為透明的文本添加到PDF中。因此,您可以在PDF中搜索文本。
如果您將其用于沒有文本信息的PDF,則可以進行搜索,從而增加了方便性。由于它基于Tesseract OCR引擎進行文本識別,因此也支持中文。
11.EasyOCR
https://github.com/JaidedAI/EasyOCR
EasyOCR基于機器學習(CRNN)實現(xiàn)OCR功能。它能夠識別超過80種語言的文字,包括簡體中文和繁體中文。它是使用python開發(fā)的,因此使用Python調用也非常簡單。例如:
識別包含中文的圖片:
import easyocr
reader = easyocr.Reader(['ch_sim','en']) # this needs to run only once to load the model into memory
reader.readtext('chinese.jpg', detail = 0)
識別結果為:
['愚園路', '西', '東', '315', '309', 'Yuyuan Rd.', 'W', 'E']
更多的例子可以通過以下這個網址進行測試:https://www.jaided.ai/easyocr/
12.kraken
https://github.com/mittagessen/kraken
kraken是一個由Python開發(fā)的OCR軟件,主要用于非拉丁字符的識別。它支持從右到左書寫的語言,例如阿拉伯語,也支持從上到下書寫的語言,例如日語。可以從命令行運行OCR識別PDF、JPEG和TIFF等格式的文件。
它的特點包括:
- 支持自定義訓練的布局分析和字符識別
- 支持從右到左, 自上而下的識別
- 提供ALTO、PageXML、abbyyXML和hOCR 格式輸出
- 能夠識別單詞邊界框,支持字符剪切
- 多腳本識別支持
- 模型文件的公共存儲庫
- 動圖識別網絡架構
更多的介紹可以參考網站:https://kraken.re/main/index.html
總之
以上介紹的這些OCR軟件可以為項目的OCR技術選型或者OCR研發(fā)提供一個參考。另外,在一些垂直領域業(yè)務應用的時候也可以結合自身業(yè)務需求自主訓練識別模型來提高應用效果。隨著AI技術的發(fā)展,OCR識別準確性也將不斷提高。