Tesseract.js使用純js實現(xiàn)的OCR文字識別
Tesseract.js
是流行的Tesseract OCR引擎的純Javascript端口。這個庫支持100多種語言,自動文本定位和腳本檢測,一個簡單的界面,用于閱讀段落、單詞和字符邊界框。Tesseract.js
既可以在瀏覽器中運行,也可以在帶有NodeJS的服務(wù)器上運行。
Tesseract簡介
Tesseract 的最新版本第 4 版于 2018 年 10 月發(fā)布,它包含一個新的 OCR 引擎,該引擎使用基于長短期記憶(LSTM) 的神經(jīng)網(wǎng)絡(luò)系統(tǒng),旨在產(chǎn)生更準確的結(jié)果。
Tesseract.js 一個幾乎能識別出圖片中所有語言的JS庫。
官網(wǎng):http://tesseract.projectnaptha.com/
git:https://github.com/naptha/tesseract.js
使用方法
先安裝好tesseract
npm安裝命令:npm install tesseract.js
安裝好tesseract后,在node_modules中會出現(xiàn)兩個文件夾
使用script標簽導入js
從tesseract.js文件夾中獲取tesseract.min.js和work.min.js兩個文件
從tesseract.js-core文件夾中獲取tesseract-core.wasm.js文件
準備一張帶有文字的圖片
提取圖片文字
在不設(shè)置語言的情況下,默認為英文語言包
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>圖片轉(zhuǎn)文字</title> <script src="./js/tesseract.min.js" type="text/javascript" charset="utf-8"></script> </head> <body> <div id="text"> </div> <script type="text/javascript"> const { createWorker } = Tesseract; const worker = createWorker({ workerPath: './js/worker.min.js', // 從上面獲取到的文件 langPath: './lang-data', // 語言包相對位置, 如果沒有默認為英文 corePath: './js/tesseract-core.wasm.js', // 從上面獲取到的文件 }); (async () => { await worker.load(); // 加載 await worker.loadLanguage('eng'); // 加載英文的語言包 await worker.initialize('eng'); // 加載英文的語言包 const { data: { text } } = await worker.recognize('./img/4.png'); //需要解析的圖片 console.log(text); document.getElementById('text').innerText = text; await worker.terminate(); })(); </script> </body> </html>
ps:在tesseract解析圖片中的文字時,遇到不同國家的文字就可能解析出錯。
tesseract.js識別中文
更改語言包關(guān)于語言包的下載,可以從碼云上查找tessdata進行下載。
可提供參考地址:
https://tesseract-ocr.github.io/tessdoc/Data-Files
https://gitee.com/zealzheng/tessdata_fast?_from=gitee_search
這個tesseract.js的離線版本,只支持對英文的識別,不支持中文,如果你放一張中文的圖片,會發(fā)現(xiàn)識別的結(jié)果是一堆亂碼。
這里需要修改其中的代碼,同時要去官網(wǎng)上下載對應(yīng)的中文語言識別包。
1.下載中文識別包
tesseract.js的語言包下載地址為https://github.com/naptha/tessdata/tree/gh-pages/4.0.0
進入該網(wǎng)址,下載對應(yīng)的中文語言包,具體名稱為chi_sim.traineddata.gz
下載完成后,將該文件放到tesseract.js-offline-master\lang-data文件夾下,該文件夾存放了所有語言識別包文件。
2.修改相應(yīng)的代碼,實現(xiàn)識別中文
修改代碼,程序邏輯很簡單:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Tesseract.js Offline</title> <script src="../node_modules/tesseract.js/dist/tesseract.min.js"></script> <script> const { createWorker } = Tesseract; const worker = createWorker({ workerPath: '../node_modules/tesseract.js/dist/worker.min.js', langPath: '../lang-data', corePath: '../node_modules/tesseract.js-core/tesseract-core.wasm.js', logger: m => console.log(m), }); (async () => { await worker.load(); await worker.loadLanguage('chi_sim'); await worker.initialize('chi_sim'); const { data: { text } } = await worker.recognize('./img/4.png'); //這里我使用了我自己的圖片目錄, //在實際使用時需要改成你自己的圖片路徑 console.log(text); await worker.terminate(); })(); </script> </head> <body> </body> </html>
總結(jié)
Tesseract 支持的圖像格式是 jpg、png、bmp 和 pbm,它們只能作為元素(img、視頻或畫布)、文件對象 ( <input>)、blob 對象、圖像的路徑或 URL 和 base64 編碼圖像提供。語言以字符串形式提供,例如eng. 該+符號可用于連接多種語言,如eng+chi_tra. 語言參數(shù)用于確定要在圖像處理中使用的訓練語言數(shù)據(jù)。
到此這篇關(guān)于Tesseract.js使用純js實現(xiàn)的OCR文字識別的文章就介紹到這了,更多相關(guān)Tesseract.js實現(xiàn)OCR文字識別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
個人總結(jié)的一些JavaScript技巧、實用函數(shù)、簡潔方法、編程細節(jié)
這篇文章主要介紹了個人總結(jié)的一些JavaScript技巧、實用函數(shù)、簡潔方法、編程細節(jié),本文講解了變量轉(zhuǎn)換、取整同時轉(zhuǎn)換成數(shù)值型、日期轉(zhuǎn)數(shù)值、類數(shù)組對象轉(zhuǎn)數(shù)組、進制之間的轉(zhuǎn)換等方法技巧,需要的朋友可以參考下2015-06-06javascript parseUrl函數(shù)(來自國外的獲取網(wǎng)址url參數(shù))
在外國一博客看到一個很好的函數(shù),獲取網(wǎng)址url等地址參數(shù)。非常不錯,值得參考與收藏。2010-06-06詳解JavaScript 新語法之Class 的私有屬性與私有方法
這篇文章主要介紹了JavaScript 新語法之Class 的私有屬性與私有方法 ,本文通過實例代碼相結(jié)合的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-04-04Javascript讀取上傳文件內(nèi)容/類型/字節(jié)數(shù)
這篇文章主要為大家詳細介紹了Javascript讀取上傳文件內(nèi)容/類型/字節(jié)數(shù),具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04