easyocr 和多重处理

问题描述 投票:0回答:1

我们正在尝试使用 easyocr 而不是 (py)tesseract。它的输出质量非常好,但是有一个不寻常的问题。它不能与 Python 的多处理库一起使用,但可以与 torch 的多处理一起使用。为了清楚起见,这里是一个不起作用的代码示例,后面是起作用的代码。

不起作用的代码:

import multiprocessing as mp
import easyocr
import cv2
def ocr_test(reader, img):  
    result = reader.readtext(img, detail = 0)
    print(result)
    
reader = easyocr.Reader(['en'], gpu=False)
img = cv2.imread('./datasets/easyocrtest/sampleocrimage.png')
p = mp.Process(target=ocr_test, args=(reader,img))
p.start()
p.join()

有效的代码:

from torch.multiprocessing import Process
import easyocr
import cv2
def ocr_test(reader, img):
    result = reader.readtext(img, detail = 0)
    print(result)

reader = easyocr.Reader(['en'], gpu=False)
img = cv2.imread('./datasets/easyocrtest/sampleocrimage.png')
p = Process(target=ocr_test(reader, img))
p.start()
p.join()

easyocr 有什么特别之处需要 torch 的多重处理吗?从表面上看,确实如此。或者我们错过了一些明显的事情?我无法附加带有图像的文件以方便他人复制,但任何包含文本的 png 文件都应该可以使用。谢谢。

python-multiprocessing torch easyocr
1个回答
0
投票

我能够使用多处理和 joblib 运行相同的功能。还没试过用火炬。但通过上述方法,我能够在大约 16 小时内处理大约 40000 个细胞图像。我仍然认为希望有更好的方法。

© www.soinside.com 2019 - 2024. All rights reserved.