🎨 改进 ocr 后台任务

This commit is contained in:
Liang Ding 2023-01-27 15:30:14 +08:00
parent c789f59b67
commit 98230a6f90
No known key found for this signature in database
GPG key ID: 136F30F901A2231D

View file

@ -32,34 +32,37 @@ func autoOCRAssets() {
assetsPath := util.GetDataAssetsAbsPath() assetsPath := util.GetDataAssetsAbsPath()
assets := getUnOCRAssetsAbsPaths() assets := getUnOCRAssetsAbsPaths()
if 0 < len(assets) {
poolSize := runtime.NumCPU() poolSize := runtime.NumCPU()
if 4 < poolSize { if 4 < poolSize {
poolSize = 4 poolSize = 4
}
waitGroup := &sync.WaitGroup{}
p, _ := ants.NewPoolWithFunc(poolSize, func(arg interface{}) {
defer waitGroup.Done()
assetAbsPath := arg.(string)
text := util.Tesseract(assetAbsPath)
p := strings.TrimPrefix(assetAbsPath, assetsPath)
p = "assets" + filepath.ToSlash(p)
util.AssetsTextsLock.Lock()
util.AssetsTexts[p] = text
util.AssetsTextsLock.Unlock()
util.AssetsTextsChanged = true
})
for i, assetAbsPath := range assets {
waitGroup.Add(1)
p.Invoke(assetAbsPath)
if 63 <= i { // 一次任务中最多处理 64 张图片,防止卡顿
break
} }
waitGroup := &sync.WaitGroup{}
p, _ := ants.NewPoolWithFunc(poolSize, func(arg interface{}) {
defer waitGroup.Done()
assetAbsPath := arg.(string)
text := util.Tesseract(assetAbsPath)
p := strings.TrimPrefix(assetAbsPath, assetsPath)
p = "assets" + filepath.ToSlash(p)
util.AssetsTextsLock.Lock()
util.AssetsTexts[p] = text
util.AssetsTextsLock.Unlock()
util.AssetsTextsChanged = true
})
for i, assetAbsPath := range assets {
waitGroup.Add(1)
p.Invoke(assetAbsPath)
if 63 <= i { // 一次任务中最多处理 64 张图片,防止卡顿
break
}
}
waitGroup.Wait()
p.Release()
} }
waitGroup.Wait()
p.Release()
cleanNotExistAssetsTexts() cleanNotExistAssetsTexts()
} }