<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          28k 的開(kāi)源 OCR 工具

          共 6151字,需瀏覽 13分鐘

           ·

          2023-01-09 18:25

          ????關(guān)注后回復(fù) “進(jìn)群” ,拉你進(jìn)程序員交流群????
          作者丨小集
          來(lái)源丨小集(ID:zsxjtip)

          要從圖像、照片中提取文本嗎?是否剛剛拍了講義的照片并想將其轉(zhuǎn)換為文本?那么您將需要一個(gè)可以通過(guò) OCR(光學(xué)字符識(shí)別)識(shí)別文本的應(yīng)用程序。今天,我們介紹一款用強(qiáng)大的開(kāi)源 OCR 庫(kù):Tesseract.js。

          Tesseract.js 是一個(gè) javascript 庫(kù),可以從圖像中獲取幾乎任何語(yǔ)言的文字。它將原始的 Tesseract 從 C 編譯為 JavaScript WebAssembly,從而使 OCR 可以在瀏覽器中訪問(wèn)。Tesseract.js 引擎最初是用 ASM.js 編寫(xiě)的,后來(lái)移植到 WebAssembly,但在某些不支持 WebAssembly 的情況下,ASM.js 仍然可以作為備份。


          正如 Tesseract.js 網(wǎng)站上所述,它支持 100 多種語(yǔ)言、自動(dòng)文本定位和腳本檢測(cè),以及用于閱讀段落、單詞和字符邊界框的簡(jiǎn)單界面。

          使用

          這里我們將展示如何使用 Tesseract.js 構(gòu)建 OCR Web 應(yīng)用程序,通過(guò)代碼一步步實(shí)現(xiàn)。

          第 1 步:引入 tesseract.js

          首先,我們需要包含 JavaScript 庫(kù) tesseract.js。在 HTML5 頁(yè)面中包含 Tesseract.js 的最簡(jiǎn)單方法是使用 CDN。因此,將以下內(nèi)容添加到網(wǎng)頁(yè)的  中。

          <html>
            <head>
              <script src='https://unpkg.com/[email protected]/dist/tesseract.min.js'></script>
            </head>
            <body>
             ......
                <script src="js/tesseract-ocr.js"></script>
            </body>
          </html>

          如果使用的是 npm,也可以通過(guò)運(yùn)行下面的命令來(lái)安裝它

          npm install tesseract.js@next

          第 2 步:設(shè)置html元素

          接下來(lái)我們需要做的是在下面添加 html 元素

          • 語(yǔ)言選擇器
          • 圖像文件選擇器
          • 所選圖像的縮略圖預(yù)覽
          • 處理后結(jié)果的占位符
          <select id="langsel">
            <option value='eng' selected> English </option>
          </select>
          <input type="file" id="file-1" class="inputfile" />
          <img id="selected-image"  src="" />
          <div id="log">
              <span id="startPre">  
                  <a id="startLink" href="#">Click here to recognize text</a> or choose your own image
              </span>
          </div>

          第 3 步:初始化并運(yùn)行 Tesseract

          此外,我們將初始化一個(gè) TesseractWorker,然后使用識(shí)別功能。這個(gè)函數(shù)異步運(yùn)行并返回一個(gè) TesseractJob 對(duì)象。

          我們可以在回調(diào)函數(shù)中獲取文本結(jié)果,可以使用 then() 方法添加回調(diào)函數(shù)。此外,使用 progress() 方法添加回調(diào)以監(jiān)視 OCR 操作的狀態(tài)和進(jìn)度。

          const worker = new Tesseract.TesseractWorker();
          worker.recognize(file, $("#langsel").val())
          .progress(function(packet){
              console.info(packet)
              progressUpdate(packet)
          })
          .then(function(data){
              console.log(data)
              progressUpdate({ status'done'data: data })
          })

          第 4 步:顯示進(jìn)度和結(jié)果

          最后,讓我們看看返回的 TesseractJob 對(duì)象,并使用它來(lái)顯示結(jié)果。


          返回結(jié)果后,它包含置信度,即從圖像中提取的文本。在單詞數(shù)組中,它還包括單詞在圖像中的位置。現(xiàn)在我們使用下面的函數(shù) progressUpdate 將其顯示給用戶。

          function progressUpdate(packet){
              var log = document.getElementById('log');
           
              if(log.firstChild && log.firstChild.status === packet.status){
                  if('progress' in packet){
                      var progress = log.firstChild.querySelector('progress')
                      progress.value = packet.progress
                  }
              }else{
                  var line = document.createElement('div');
                  line.status = packet.status;
                  var status = document.createElement('div')
                  status.className = 'status'
                  status.appendChild(document.createTextNode(packet.status))
                  line.appendChild(status)
           
                  if('progress' in packet){
                      var progress = document.createElement('progress')
                      progress.value = packet.progress
                      progress.max = 1
                      line.appendChild(progress)
                  }
           
           
                  if(packet.status == 'done'){
                      log.innerHTML = ''
                      var pre = document.createElement('pre')
                      pre.appendChild(document.createTextNode(packet.data.text.replace(/\n\s*\n/g'\n')))
                      line.innerHTML = ''
                      line.appendChild(pre)
                      $(".fas").removeClass('fa-spinner fa-spin')
                      $(".fas").addClass('fa-check')
                  }
           
                  log.insertBefore(line, log.firstChild)
              }
          }

          這就是全部代碼。我們可以選擇自己的帶有一些文字的圖像,然后觀看結(jié)果。

          小結(jié)

          Tesseract.js 有一些優(yōu)點(diǎn),如它支持多種語(yǔ)言,正常字體和清晰背景的準(zhǔn)確性非常高。當(dāng)然有也有些缺點(diǎn),如背景復(fù)雜時(shí)效果不佳,會(huì)被一些自定義字體弄糊涂了。

          但是,它仍是一個(gè)很棒的 JavaScript 庫(kù)。它為瀏覽器帶來(lái)了 OCR 的強(qiáng)大功能,并為開(kāi)發(fā)人員打開(kāi)了一扇機(jī)會(huì)之門。

          ?

          「Tesseract.js」

          地址:https://github.com/naptha/tesseract.js

          ??:28.6k

          語(yǔ)言:Javascript

          ?


          -End-

          最近有一些小伙伴,讓我?guī)兔φ乙恍?nbsp;面試題 資料,于是我翻遍了收藏的 5T 資料后,匯總整理出來(lái),可以說(shuō)是程序員面試必備!所有資料都整理到網(wǎng)盤(pán)了,歡迎下載!

          點(diǎn)擊??卡片,關(guān)注后回復(fù)【面試題】即可獲取

          在看點(diǎn)這里好文分享給更多人↓↓

          瀏覽 65
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人AV电影在线 | 日韩天天操 | 日韩欧美黄色电影一区 | 午夜福利天天射天天操 | 五月激情综合 |