Skip to content

Commit

Permalink
feat: improve paddle ocr (#247)
Browse files Browse the repository at this point in the history
  • Loading branch information
Tsuk1ko authored Aug 18, 2023
1 parent b5ceec7 commit 0e87e06
Show file tree
Hide file tree
Showing 8 changed files with 48 additions and 16 deletions.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
},
"dependencies": {
"@arkntools/depot-recognition": "^1.8.1",
"@arkntools/paddlejs-ocr": "^1.1.2",
"@arkntools/paddlejs-ocr": "^2.0.0",
"@johmun/vue-tags-input": "^2.1.0",
"@yzfe/darkmodejs": "^1.2.1",
"browser-image-resizer": "^2.4.1",
Expand Down
2 changes: 1 addition & 1 deletion src/locales/cn/hr.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
"useLocalOCR": "使用本地 OCR(实验性)",
"localOCRTip": {
"Tesseract": "启用后将使用 Tesseract 在本地进行 OCR,首次使用需加载合计约 10~40 MB 的运行库与模型数据,后续使用则不会再消耗流量,并可离线使用。注意:目前无法识别 UI 改动后的“@:(tag.14)”和“@:(tag.11)”。",
"Paddle": "启用后将使用 Paddle 在本地进行 OCR,首次使用需加载合计约 12 MB 的运行库与模型数据,后续使用则不会再消耗流量,并可离线使用。注意:Paddle OCR 目前仅在 PC 端可用,只能识别简体中文截图。"
"Paddle": "启用后将使用 Paddle 在本地进行 OCR,首次使用需加载合计约 8 MB 的运行库与模型数据,后续使用则不会再消耗流量,并可离线使用。注意:Paddle OCR 目前仅在 PC 端可用,只能识别简体中文截图。"
},
"tip": "在线 OCR 功能使用了 {0} 提供的免费 OCR 服务,并默认使用官方提供的试用 API Key。如果您的使用频率较高而达到了试用限制,请{1}申请免费的 API Key。",
"applyLink": "前往此处"
Expand Down
2 changes: 1 addition & 1 deletion src/locales/jp/hr.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
"useLocalOCR": "ローカル OCR を使用する(実験的)",
"localOCRTip": {
"Tesseract": "有効にすると、Tesseract を使用してローカルで OCR を実行します。最初の使用では、合計で約 10~40 MB のランタイムデータとモデルデータをロードする必要があります。その後の使用ではデータが消費されなくなり、オフラインで使用できます。※UI変更後の「@:(tag.14)」「@:(tag.11)」は認識されません。",
"Paddle": "有効にすると、Paddle を使用してローカルで OCR を実行します。最初の使用では、合計で約 12 MB のランタイムデータとモデルデータをロードする必要があります。その後の使用ではデータが消費されなくなり、オフラインで使用できます。※Paddle OCR は現在 PC でのみ利用可能で、簡体字中国語のスクリーンショットのみを認識できます。"
"Paddle": "有効にすると、Paddle を使用してローカルで OCR を実行します。最初の使用では、合計で約 8 MB のランタイムデータとモデルデータをロードする必要があります。その後の使用ではデータが消費されなくなり、オフラインで使用できます。※Paddle OCR は現在 PC でのみ利用可能で、簡体字中国語のスクリーンショットのみを認識できます。"
},
"tip": "オンライン OCR 機能は、{0} が提供する無料の OCR サービスを使用し、既定で公式試行 API Key 使用します。もしあなたの使用頻度が高くて試用制限に達したら、{1}無料の API Key を申請してください。",
"applyLink": "ここで"
Expand Down
2 changes: 1 addition & 1 deletion src/locales/tw/hr.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
"useLocalOCR": "使用本地 OCR(實驗性)",
"localOCRTip": {
"Tesseract": "啟用後將使用 Tesseract 在本地進行 OCR,首次使用需加載合計約 10~40 MB 的運行庫與模型資料,後續使用則不會再消耗流量,並可離線使用。注意:目前無法辨識 UI 改動後的「@:(tag.14)」和「@:(tag.11)」。",
"Paddle": "啟用後將使用 Paddle 在本地進行 OCR,首次使用需加載合計約 12 MB 的運行庫與模型資料,後續使用則不會再消耗流量,並可離線使用。注意:Paddle OCR 目前僅在 PC 端可用,只能辨識簡體中文截圖。"
"Paddle": "啟用後將使用 Paddle 在本地進行 OCR,首次使用需加載合計約 8 MB 的運行庫與模型資料,後續使用則不會再消耗流量,並可離線使用。注意:Paddle OCR 目前僅在 PC 端可用,只能辨識簡體中文截圖。"
},
"tip": "線上 OCR 功能使用了 {0} 提供的免費 OCR 服務,並預設使用官方提供的試用 API Key。如果您的使用頻率較高而達到了試用限制,請{1}申請免費的 API Key。",
"applyLink": "前往此處"
Expand Down
2 changes: 1 addition & 1 deletion src/locales/us/hr.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
"useLocalOCR": "Use local OCR (experimental)",
"localOCRTip": {
"Tesseract": "After enable, Tesseract will be used for local OCR. For the first use, you need to load a total of about 10-40 MB of runtime and model data. Subsequent use will no longer use your network traffic, and can be used offline. Note: \"@:(tag.14)\" and \"@:(tag.11)\" after UI changes can't be recognized.",
"Paddle": "After enable, Paddle will be used for local OCR. For the first use, you need to load a total of about 12 MB of runtime and model data. Subsequent use will no longer use your network traffic, and can be used offline. Note: Paddle OCR is currently only available on PC and can only recognize Simplified Chinese screenshots."
"Paddle": "After enable, Paddle will be used for local OCR. For the first use, you need to load a total of about 8 MB of runtime and model data. Subsequent use will no longer use your network traffic, and can be used offline. Note: Paddle OCR is currently only available on PC and can only recognize Simplified Chinese screenshots."
},
"tip": "This function uses the free OCR service provided by {0}, and uses the official trial API key by default. If you have reached the trial limit due to high usage frequency, please {1} to apply for a free API key.",
"applyLink": "go here"
Expand Down
11 changes: 5 additions & 6 deletions src/workers/paddlejsOCR/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,10 @@ const hasDataCache = async () => {
new Set(),
);
const urls = [
'https://paddlejs.bj.bcebos.com/models/fuse/ocr/ch_PP-OCRv2_det_fuse_activation/model.json',
'https://paddlejs.bj.bcebos.com/models/fuse/ocr/ch_PP-OCRv2_det_fuse_activation/chunk_1.dat',
'https://paddlejs.bj.bcebos.com/models/fuse/ocr/ch_PP-OCRv2_rec_fuse_activation/model.json',
'https://paddlejs.bj.bcebos.com/models/fuse/ocr/ch_PP-OCRv2_rec_fuse_activation/chunk_1.dat',
'https://paddlejs.bj.bcebos.com/models/fuse/ocr/ch_PP-OCRv2_rec_fuse_activation/chunk_2.dat',
'https://js-models.bj.bcebos.com/PaddleOCR/PP-OCRv3/ch_PP-OCRv3_det_infer_js_960/model.json',
'https://js-models.bj.bcebos.com/PaddleOCR/PP-OCRv3/ch_PP-OCRv3_det_infer_js_960/chunk_1.dat',
'https://js-models.bj.bcebos.com/PaddleOCR/PP-OCRv3/ch_PP-OCRv3_rec_infer_js/model.json',
'https://js-models.bj.bcebos.com/PaddleOCR/PP-OCRv3/ch_PP-OCRv3_rec_infer_js/chunk_1.dat',
];
return urls.every(url => cachedUrlSet.has(url));
};
Expand All @@ -61,7 +60,7 @@ export const paddleOCR = async file => {
!IS_DEV &&
status === 0 &&
!(await hasDataCache()) &&
!(await loadConfirmLoading('~12 MB'))
!(await loadConfirmLoading('~8 MB'))
) {
return;
}
Expand Down
35 changes: 34 additions & 1 deletion src/workers/paddlejsOCR/paddle.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,37 @@
import * as ocr from '@arkntools/paddlejs-ocr';
import config from '@arkntools/paddlejs-ocr/dist/defaultInitConfig';

(() => {
const errChars = [
['狙', 623, 984, 2079, 3762],
['术', 435, 485, 3678],
['辅', 128, 1952, 2859],
['攻', 1809],
['干', 89],
['援', 546, 3052],
['重', 340, 1300],
['攻', 4638],
['速', 6007],
['弱', 1509],
['深', 3089],
['高', 532],
['装', 41, 5185],
['复', 709],
['存', 3543],
['费', 4007],
['复', 2353],
['控', 4578],
['特', 451],
['程', 3232],
];
const chars = config.ocrChars.split('');
errChars.forEach(([char, ...indexes]) => {
indexes.forEach(i => {
chars[i] = char;
});
});
config.ocrChars = chars;
})();

let initPromise;
let status = 0;
Expand All @@ -10,7 +43,7 @@ export const init = () => {
status = 1;
// eslint-disable-next-line no-console
console.log('[tag-ocr] loading Paddle models');
initPromise = ocr.init().then(() => {
initPromise = ocr.init(config).then(() => {
status = 2;
// eslint-disable-next-line no-console
console.log('[tag-ocr] done');
Expand Down
8 changes: 4 additions & 4 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -45,10 +45,10 @@
lodash "^4.17.21"
simple-statistics "^7.8.3"

"@arkntools/paddlejs-ocr@^1.1.2":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@arkntools/paddlejs-ocr/-/paddlejs-ocr-1.1.2.tgz#1e1852fdfa4c62d9ca339235521a6ef062aa40dd"
integrity sha512-+BvroWNfNajLLGHTUrZLYC+1jL+8PUi/4DV5/b+pmI8qzHZB4BvvKeX8m4Mq7+AOSgIYJdJq6LxcyhOeL3KH7g==
"@arkntools/paddlejs-ocr@^2.0.0":
version "2.0.0"
resolved "https://registry.yarnpkg.com/@arkntools/paddlejs-ocr/-/paddlejs-ocr-2.0.0.tgz#09d5c5830fd1bcadcd9a6c226dda4a84ea43cea5"
integrity sha512-B+RSz9VqDC93ab1WMwF6RIuZIDDnBaKKzuLiZJrdU4QW8Ji6o5OlIYnwmGF6o93LeaGtcbgDizGgjI1+VYtjIQ==
dependencies:
"@paddlejs-mediapipe/opencv" "0.0.4"
"@paddlejs/paddlejs-backend-webgl" "1.2.9"
Expand Down

0 comments on commit 0e87e06

Please sign in to comment.