我正在使用 Tesseract 对数百万个 PDF 进行 OCR,并且我正在尝试尽可能地发挥性能。
我当前的管道使用
convert
将 PDF 转换为 PNG 文件(每页一个),然后对每个文件使用 Tesseract。
在分析过程中,我发现很多时间都花在将文件写入磁盘,然后再次读取它们,所以我想将所有这些都移到内存中。
我已经在内存中进行了 PDF 到 PNG 的转换,所以现在我需要一种方法将内存中的 blob 传递给 Tesseract,而不是为其提供文件路径?我找不到任何相关文档或示例?
我们可以使用 BytesIO 来欺骗它:
from io import BytesIO
from PIL import Image
import fitz # pymupdf lib, but you can use anything else if it can save image
import pytesseract
doc = fitz.open("your_pdf_file.pdf")
page = doc.load_page(5) # for example, I need only one page
pix = page.get_pixmap()
doc.close() # we don't need pdf file anymore
image = Image.open(BytesIO(pix.tobytes()))
text = pytesseract.image_to_string(image)
print(text)
就是这样。