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