- 方便:解壓即用,離線運行,無需網(wǎng)絡(luò)。
- 批量:可批量導(dǎo)入處理圖片,結(jié)果保存到本地 txt / md / jsonl 多種格式文件。也可以即時截屏識別。
- 高效:采用 PaddleOCR-json C++ 識別引擎。只要電腦性能足夠,通常比在線OCR服務(wù)更快。
- 精準(zhǔn):默認(rèn)使用PPOCR-v3模型庫。除了能準(zhǔn)確辨認(rèn)常規(guī)文字,對手寫、方向不正、雜亂背景等情景也有不錯的識別率。可設(shè)置忽略區(qū)域排除水印、設(shè)置文塊后處理合并排版段落,得到規(guī)整的文本。
下載
Umi-OCR 軟件本體含 簡體中文&英文 通用識別庫。
配套 多國語言識別擴展包 可導(dǎo)入 繁中,英,日,韓,俄,德,法
識別庫,請按需下載。
- main分支可能含有開發(fā)中的新功能。若您想使用穩(wěn)定版本,建議切換到最新的Release分支。
- 安裝依賴庫:
pip install -r requirements.txt
- 打包還需要:
pip install pyinstaller
- 運行
main.py
啟動程序。測試無異常后,運行 to_exe.py
一鍵打包。 - 打包后,請將引擎組件 PaddleOCR-json 整個文件夾 放置于exe同目錄下!
- 打包后,請將引擎組件 PaddleOCR-json 整個文件夾 放置于exe同目錄下!!
- 打包后,請將引擎組件 PaddleOCR-json 整個文件夾 放置于exe同目錄下?。。?/section>
兼容性
- 系統(tǒng)支持 Win10 x64 及以上版本。
- 出現(xiàn)初始化引擎失敗等問題時請參考 問題排除 。
前言
關(guān)于忽略指定區(qū)域的特殊功能:
類似含水印的視頻截圖、含有UI/按鈕的游戲截圖等,往往只需要提取字幕區(qū)域的文本,而避免提取到水印和UI文本。本軟件可設(shè)置忽略某些區(qū)域內(nèi)的文字,來實現(xiàn)這一目的。
當(dāng)有大量的影視和游戲截圖需要整理歸檔,或者想翻找包含某一段臺詞/字幕的截圖;將這些圖片提取出文字、然后Ctrl+F是一個很有效的方法。這是開發(fā)本軟件的初衷。
關(guān)于離線OCR引擎 PaddleOCR-json :
對 PaddleOCR 2.6 cpu_avx_mkl C++ 的封裝。效率高于Python版本PPOCR及部分Python編寫的OCR引擎,通常比在線OCR服務(wù)更快(省去網(wǎng)絡(luò)傳輸?shù)臅r間)。支持更換Paddle官方模型(兼容v2和v3版本)或自己訓(xùn)練的模型,支持修改PPOCR各項參數(shù)。通過添加不同的語言模型,軟件可識別多國語言。
簡單上手
準(zhǔn)備
下載壓縮包并解壓全部文件即可。
截圖識別
點擊截圖按鈕或自定義快捷鍵,喚起截圖識別。
粘貼圖片到軟件
在任何地方(如文件管理器,網(wǎng)頁,微信)復(fù)制圖片,軟件上點擊粘貼按鈕,自動識別。
批量識別本地圖片文件
將圖片或文件夾拖進軟件,批量轉(zhuǎn)換文字。也可以點擊按鈕打開瀏覽窗口導(dǎo)入。
識別結(jié)果將保存到本地??蛇x生成純文本txt文件、帶鏈接Markdown文件、原始信息jsonl文件等不同格式??膳渲萌蝿?wù)完成后執(zhí)行關(guān)機/待機。
文本塊后處理(排版優(yōu)化)
OCR識別出的文本是按“塊”劃分的,通常一行文字分為一塊,有時還會將一行誤劃分為多塊,這給閱讀帶來了不便。文本塊后處理就是對文本塊進行再加工的過程,合并同一行或同一段落內(nèi)的文字,按正確的順序排序。
下圖表示不同排版應(yīng)該選用何種處理方案:
所有方案一覽:
橫排-優(yōu)化單行
將誤劃分為多塊的同一行文字合并到一行。
橫排-合并多行-左對齊
將多個左對齊的行視為同一段落,合并文字。左側(cè)未對齊或行距過大的行視為下一段落。
橫排-合并多行-自然段
將多個左對齊的行視為同一段落,且第一行的開頭允許多空出兩個全角空格的寬度。
橫排-合并多行-模糊匹配
只要垂直投影有重疊,行高一致,距離較近的文本塊,視為同一段落。
豎排-從左到右-單行 / 豎排-從右至左-單行
優(yōu)化豎排識別,合并同一行文字,按從左到右或從右到左的順序輸出每一行。 注意,必須搭配支持豎排識別的模型庫(識別語言)一起使用。
可視化預(yù)覽:
可以在忽略區(qū)域編輯器內(nèi)預(yù)覽文本塊后處理的效果。編輯器中以虛線框標(biāo)出識別到、經(jīng)過后處理的文字塊。
這里僅僅是借用了編輯器來展示后處理的效果,實際運行任務(wù)時 忽略區(qū)域機制 早于 后處理機制 執(zhí)行,不受后處理的影響。
忽略區(qū)域功能
忽略區(qū)域是本軟件特色功能,可用于排除圖片中水印的干擾,讓識別結(jié)果只留下所需的文本。
“忽略區(qū)域”是指圖片上指定位置與大小的矩形區(qū)域,完全處于這些區(qū)域內(nèi)的文字塊,將被排除。
- 點擊 設(shè)置 選項卡中的 打開忽略區(qū)域編輯器 ,進入編輯器窗口。
- 將任意圖片 拖入 該窗口,可預(yù)覽該圖片。將新圖片拖入窗口可切換預(yù)覽,但已繪制的忽略區(qū)域不會消失;可切換不同圖片來仔細調(diào)整忽略區(qū)域。
- 繪制 忽略區(qū)域 :拖入圖片后,點擊選中左起第一按鈕 +忽略區(qū)域 A ,然后在圖片上按住左鍵拖拽,繪制矩形區(qū)域。可 撤銷 步驟。
- 繪制完后,點擊 完成 返回軟件主窗口。若不想應(yīng)用此次繪制,則右上角X,取消。
簡單案例見下。
簡單排除視頻截圖中的水?。?/span>
- 打開忽略區(qū)域設(shè)置窗口,拖入任一張截圖。
稍等約1秒,面板上會顯示出圖片,識別到的文字區(qū)域會被虛線框起來。發(fā)現(xiàn)右上角的水印也被識別到了。
- 點擊選擇 +忽略區(qū)域 A 。在畫面上按住左鍵拖拽,繪制方框完全包裹住水印區(qū)域,范圍可以大一些??衫L制多個方框。
3. 點擊 完成 。返回主窗口, 開始任務(wù) 。
排除游戲截圖中的兩種UI:
假設(shè)有一組游戲截圖,主要分為兩類圖片,這兩類圖片的文字位置和UI位置不太相同:
- 甲類(上圖左)為對話模式,字?jǐn)?shù)少,要保留的臺詞文本在畫面下方,要排除的UI分布于底端。
- 乙類(上圖右)為歷史文本模式,字?jǐn)?shù)多,從上到下都有要保留的文本(與甲類UI位置有重合),要排除的UI分布在兩側(cè)。
- 拖入一張甲類圖片。選擇 +忽略區(qū)域 A ,繪制方框包裹住要排除的 底端UI ??衫L制多個方框。
- 拖入一張乙類圖片。選擇 +識別區(qū)域 ,繪制方框包裹住 小部分要保留的文本 。注意只要該區(qū)域內(nèi)含有任意保留文本即可,不需要畫得很大,不需要包裹住所有保留文本;不能與甲類圖中 可能存在的任何文本 重合。
- 然后選擇 +忽略區(qū)域 B ,繪制方框包裹住乙類圖要排除的 兩側(cè)UI ??衫L制多個方框。
忽略區(qū)域處理邏輯:
- 忽略區(qū)域A :正常情況下,處于 忽略區(qū)域A 內(nèi)的文字 不會 輸出。
- 識別區(qū)域 :當(dāng)識別區(qū)域內(nèi)存在文本時,忽略區(qū)域A失效 ;即處于忽略區(qū)域A內(nèi)的文字也 會 被輸出。
- 忽略區(qū)域B :當(dāng) 忽略區(qū)域A失效 時,忽略區(qū)域B才生效;即處于區(qū)域A內(nèi)的文字 會 輸出、區(qū)域B內(nèi)的文字 不會 輸出。
識別區(qū)域 | 忽略區(qū)域A | 忽略區(qū)域B |
---|
× 不存在文字 | √ 生效 | × 失效 |
√ 存在文字 | × 失效 | √ 生效 |
- “忽略區(qū)域配置”只針對一種分辨率生效。假如配置的分辨率是1920x1080,那么批量識別圖片時,只有符合1920x1080的圖片才會排除干擾文本;1920x1081的圖片中的文字會全部輸出。
- 拖入預(yù)覽的圖片必須分辨率相同。假如先拖入1920x1080的圖片,再拖入其它分辨率的圖片;軟件會彈窗警告。只有點擊 清空 刪除當(dāng)前已配置的忽略區(qū)域,才能拖入其他分辨率圖片,并應(yīng)用此分辨率。
地址:https://github.com/hiroi-sora/Umi-OCR
更多功能廣大網(wǎng)友可以繼續(xù)挖掘。