免費:本項目所有代碼開源,完全免費。 方便:解壓即用,離線運行,無需網(wǎng)絡(luò)。 批量:可批量導(dǎo)入處理圖片,結(jié)果保存到本地 txt / md / jsonl 多種格式文件。也可以即時截屏識別。 高效:采用 PaddleOCR-json C++ 識別引擎。只要電腦性能足夠,通常比在線OCR服務(wù)更快。 精準:默認使用PPOCR-v3模型庫。除了能準確辨認常規(guī)文字,對手寫、方向不正、雜亂背景等情景也有不錯的識別率??稍O(shè)置忽略區(qū)域排除水印、設(shè)置文塊后處理合并排版段落,得到規(guī)整的文本。 01 下載Umi-OCR 軟件本體含 簡體中文&英文 識別庫。 Github下載:https://github.com/hiroi-sora/Umi-OCR/releases/tag/v1.3.0 藍奏云下載:(密碼 1111 。請留意發(fā)布日期和版本號) https://wwn./b036wwa4d 使用源代碼: main分支可能含有開發(fā)中的新功能。若您想使用穩(wěn)定版本,建議切換到最新的Release分支。 安裝依賴庫:pip install -r requirements.txt 可直接運行 main.py 啟動程序,或自己打包為exe。 項目使用pyinstaller打包。運行 to_exe.py 一鍵打包。 打包后,請將引擎組件 PaddleOCR-json 整個文件夾 放置于exe同目錄下! 打包后,請將引擎組件 PaddleOCR-json 整個文件夾 放置于exe同目錄下??! 打包后,請將引擎組件 PaddleOCR-json 整個文件夾 放置于exe同目錄下?。?! 02 兼容性系統(tǒng)支持 Win10 x64 及以上版本。 CPU必須具有AVX指令集。常見的家用CPU一般都滿足該條件。(出現(xiàn)初始化引擎失敗等問題時請檢查CPU是否兼容。) 03 前言關(guān)于忽略指定區(qū)域的特殊功能: 類似含水印的視頻截圖、含有UI/按鈕的游戲截圖等,往往只需要提取字幕區(qū)域的文本,而避免提取到水印和UI文本。本軟件可設(shè)置忽略某些區(qū)域內(nèi)的文字,來實現(xiàn)這一目的。 當有大量的影視和游戲截圖需要整理歸檔,或者想翻找包含某一段臺詞/字幕的截圖;將這些圖片提取出文字、然后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ù)。通過添加不同的語言模型,軟件可識別多國語言。 04 簡單上手準備 下載壓縮包并解壓全部文件即可。 截圖識別 點擊截圖按鈕或自定義快捷鍵,喚起截圖識別。 多屏幕用戶請注意 由于windows縮放對屏幕坐標系帶來的影響,若外接多塊屏幕,且縮放比例不一致時,可能導(dǎo)致Umi-OCR內(nèi)置截圖模塊異常,如畫面不完整、窗口變形、識別不出文字等。 若出現(xiàn)這種情況,請在系統(tǒng)設(shè)置里的【更改文本、應(yīng)用等項目的大小】將所有屏幕調(diào)到相同數(shù)值。 若不想修改系統(tǒng)設(shè)置,軟件還附帶了第二套截圖方案:調(diào)用windows內(nèi)置的“截圖和草圖”來完成截圖并喚起OCR。可在軟件設(shè)置里切換。 若系統(tǒng)截圖后不能喚起OCR,請確保系統(tǒng)能通過 win+shift+S 觸發(fā)截圖,且自動復(fù)制到剪貼板 的開關(guān)不能關(guān)閉(默認是打開的)。 粘貼圖片到軟件 在任何地方(如文件管理器,網(wǎng)頁,微信)復(fù)制圖片,軟件上點擊粘貼按鈕,自動識別。 批量識別本地圖片文件 將圖片或文件夾拖進軟件,批量轉(zhuǎn)換文字。也可以點擊按鈕打開瀏覽窗口導(dǎo)入。 識別結(jié)果將保存到本地??蛇x生成純文本txt文件、帶鏈接Markdown文件、原始信息jsonl文件等不同格式??膳渲萌蝿?wù)完成后執(zhí)行關(guān)機/待機。 05 文本塊后處理(排版優(yōu)化)OCR識別出的文本是按“塊”劃分的,通常一行文字分為一塊,有時還會將一行誤劃分為多塊,這給閱讀帶來了不便。文本塊后處理就是對文本塊進行再加工的過程,合并同一行或同一段落內(nèi)的文字,按正確的順序排序。 下圖表示不同排版應(yīng)該選用何種處理方案: 所有方案一覽: 橫排-優(yōu)化單行 將誤劃分為多塊的同一行文字合并到一行。 橫排-合并多行-左對齊 將多個左對齊的行視為同一段落,合并文字。左側(cè)未對齊或行距過大的行視為下一段落。 橫排-合并多行-自然段 將多個左對齊的行視為同一段落,且第一行的開頭允許多空出兩個全角空格的寬度。 橫排-合并多行-模糊匹配 只要垂直投影有重疊,行高一致,距離較近的文本塊,視為同一段落。 豎排-從左到右-單行 / 豎排-從右至左-單行 優(yōu)化豎排識別,合并同一行文字,按從左到右或從右到左的順序輸出每一行。注意,必須搭配支持豎排識別的模型庫(識別語言)一起使用。 可視化預(yù)覽: 可以在忽略區(qū)域編輯器內(nèi)預(yù)覽文本塊后處理的效果。編輯器中以虛線框標出識別到、經(jīng)過后處理的文字塊。 這里僅僅是借用了編輯器來展示后處理的效果,實際運行任務(wù)時 忽略區(qū)域機制 早于 后處理機制 執(zhí)行,不受后處理的影響。 06 忽略區(qū)域功能忽略區(qū)域是本軟件特色功能,可用于排除圖片中水印的干擾,讓識別結(jié)果只留下所需的文本。 “忽略區(qū)域”是指圖片上指定位置與大小的矩形區(qū)域,完全處于這些區(qū)域內(nèi)的文字塊,將被排除。 點擊 設(shè)置 選項卡中的 打開忽略區(qū)域編輯器 ,進入編輯器窗口。 將任意圖片 拖入 該窗口,可預(yù)覽該圖片。將新圖片拖入窗口可切換預(yù)覽,但已繪制的忽略區(qū)域不會消失;可切換不同圖片來仔細調(diào)整忽略區(qū)域。 繪制 忽略區(qū)域 :拖入圖片后,點擊選中左起第一按鈕 +忽略區(qū)域 A ,然后在圖片上按住左鍵拖拽,繪制矩形區(qū)域。可 撤銷 步驟。 繪制完后,點擊 完成 返回軟件主窗口。若不想應(yīng)用此次繪制,則右上角X,取消。 簡單案例見下。 簡單排除視頻截圖中的水?。?/p> 打開忽略區(qū)域設(shè)置窗口,拖入任一張截圖。稍等約1秒,面板上會顯示出圖片,識別到的文字區(qū)域會被虛線框起來。發(fā)現(xiàn)右上角的水印也被識別到了。 點擊選擇 +忽略區(qū)域 A 。在畫面上按住左鍵拖拽,繪制方框完全包裹住水印區(qū)域,范圍可以大一些??衫L制多個方框。 點擊 完成 。返回主窗口, 開始任務(wù) 。 排除游戲截圖中的兩種UI: 假設(shè)有一組游戲截圖,主要分為兩類圖片,這兩類圖片的文字位置和UI位置不太相同: 甲類(上圖左)為對話模式,字數(shù)少,要保留的臺詞文本在畫面下方,要排除的UI分布于底端。 乙類(上圖右)為歷史文本模式,字數(shù)多,從上到下都有要保留的文本(與甲類UI位置有重合),要排除的UI分布在兩側(cè)。 拖入一張甲類圖片。選擇 +忽略區(qū)域 A ,繪制方框包裹住要排除的 底端UI ??衫L制多個方框。 拖入一張乙類圖片。選擇 +識別區(qū)域 ,繪制方框包裹住 小部分要保留的文本 。注意只要該區(qū)域內(nèi)含有任意保留文本即可,不需要畫得很大,不需要包裹住所有保留文本;不能與甲類圖中 可能存在的任何文本 重合。 然后選擇 +忽略區(qū)域 B ,繪制方框包裹住乙類圖要排除的 兩側(cè)UI ??衫L制多個方框。 點擊 完成 。返回主窗口, 開始任務(wù) 。 忽略區(qū)域處理邏輯: 忽略區(qū)域A :正常情況下,處于 忽略區(qū)域A 內(nèi)的文字 不會 輸出。 識別區(qū)域 :當識別區(qū)域內(nèi)存在文本時,忽略區(qū)域A失效 ;即處于忽略區(qū)域A內(nèi)的文字也 會 被輸出。 忽略區(qū)域B :當 忽略區(qū)域A失效 時,忽略區(qū)域B才生效;即處于區(qū)域A內(nèi)的文字 會 輸出、區(qū)域B內(nèi)的文字 不會 輸出。 “忽略區(qū)域配置”只針對一種分辨率生效。假如配置的分辨率是1920x1080,那么批量識別圖片時,只有符合1920x1080的圖片才會排除干擾文本;1920x1081的圖片中的文字會全部輸出。 拖入預(yù)覽的圖片必須分辨率相同。假如先拖入1920x1080的圖片,再拖入其它分辨率的圖片;軟件會彈窗警告。只有點擊 清空 刪除當前已配置的忽略區(qū)域,才能拖入其他分辨率圖片,并應(yīng)用此分辨率。 07 進階小技巧v1.3.0 后大部分設(shè)置項都在軟件內(nèi)有提示,鼠標懸停即可查看。因此README不再提供所有設(shè)置的詳細說明。 以下是進階操作說明。 自定義計劃任務(wù)除了默認的自動關(guān)機/待機外,您還可創(chuàng)建自己的計劃任務(wù),讓軟件在完成一次批量識別后執(zhí)行自定義cmd命令。 在軟件關(guān)閉的情況下,打開配置文件 Umi-OCR_config.json 。也可以先打開軟件,點擊設(shè)置頁最底部的 打開設(shè)置文件 ,然后退出軟件。 在okMission中添加一項元素。 鍵為任務(wù)名稱,值為字典,其中code為cmd命令。多條命令可用&分隔。例: "我的任務(wù)": {"code": "cmd命令1 & 命令2"} 添加多國語言 方法一:下載 [Umi-OCR 多國語言識別擴展包] ,拷貝到軟件目錄即可。 擴展包內(nèi)置語言:繁中,日,韓,俄,德,法 方法二:手動下載添加 PP-OCR 模型庫 模型分為三種:det檢測,cls方向分類,rec識別。其中det和cls是多語言通用的,只需下載新語言的rec識別模型即可。 前往 PP-OCR系列V3多語言識別模型列表 ,下載一組rec識別模型。 若V3模型列表里沒有找到目標語言,可以去支持語言列表查看PPOCR有沒有提供這種語言。若有,則可能它暫未推出V3模型,可以先使用舊版V2模型。(V3模型網(wǎng)址中的2.x一路換成更小的數(shù)字可以查看舊版頁面) 前往 PP-OCR系列 字典列表 ,下載對應(yīng)語言的字典文件。(但V3英文字典en_dict.txt不是本目錄下的那個,而是在上一級目錄) 將下載好的文件解壓放進軟件目錄的 PaddleOCR-json 文件夾中。 復(fù)制一份 PaddleOCR_json_config_[模板].txt ,改一下名。(文件名不允許有非英文字符!) 打開復(fù)制好的 PaddleOCR_json_config_XX.txt ,將 rec路徑 rec_model_dir 和 字典路徑 rec_char_dict_path 改成目標語言的文件(夾)的名稱。若模型庫是v2版本,還必須加上一行 rec_img_h 32 。 回到上一層目錄 Umi-OCR ,打開 Umi-OCR_config.json ,在 “ocrConfig” 中添加新語言的信息。鍵為語言名稱,值的 path 為config txt文件的名稱。保持json格式,注意逗號。(修改config.json文件時,請確保未打開軟件,否則配置可能被覆蓋。) 打開軟件,檢查設(shè)置頁的識別語言下拉框是否已經(jīng)能選擇該語言。 添加到開始菜單 軟件創(chuàng)建一個快捷方式 打開系統(tǒng)目錄 C:\ProgramData\Microsoft\Windows\Start Menu\Programs ,將快捷方式扔進去。 添加到開機自啟 軟件創(chuàng)建一個快捷方式 打開系統(tǒng)目錄 C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp ,將快捷方式扔進去。 添加到運行(Win+R) 在任何地方創(chuàng)建一個文件夾,名字隨意,將該文件夾的路徑加入系統(tǒng)環(huán)境變量。 軟件創(chuàng)建一個快捷方式,改一個簡短的名字,如umi。 將快捷方式扔進第1步的文件夾中。 任何時候按下Win+R,在彈窗中輸入umi,即可打開軟件。 提示:請不要起名為ocr,因為系統(tǒng)可能存在同名的注冊路徑,無法用此指令喚起第三方軟件。 |
|