设计说明

为什么OCRmyPDF不使用PyTesseract?

PyTesseract 是一个围绕 Tesseract OCR 引擎的 Python 封装器。当 OCRmyPDF 首次编写时,PyTesseract 使用 ABI 绑定来调用 Tesseract 库。这对于 OCRmyPDF 来说并不合适,因为 ABI 绑定可能很脆弱。

PyTesseract 已经发展成调用 Tesseract 可执行文件,放弃了 ABI 方法,转而使用 CLI,就像 OCRmyPDF 所做的那样。如果今天从头开始编写,OCRmyPDF 可能会使用 PyTesseract。

PyTesseract 有更多功能,但不需要 PDF 输出,而 OCRmyPDF 的 API 在创建 PDF 方面功能较少。

什么是 executor()

OCRmyPDF 使用了一个自定义的并发执行器,该执行器可以支持线程或进程,并提供相同的接口。这非常有用,因为 OCRmyPDF 可以根据任务的需要使用线程或进程来并行化工作。

该接口目前是私有的,可能会发生变化。特别是,如果与asyncio和anyio的实验成功,接口将会改变。