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