设计说明

为什么 OCRmyPDF 不使用 PyTesseract?

PyTesseract 是 Tesseract OCR 引擎的 Python 包装器。当 OCRmyPDF 最初编写时,PyTesseract 使用 ABI 绑定来调用 Tesseract 库。这对于 OCRmyPDF 来说不是一个好的选择,因为 ABI 绑定可能不稳定。

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

PyTesseract 有更多不需要 PDF 输出的特性,但在创建 PDF 方面,其特性不如 OCRmyPDF 的 API 丰富。

什么是 executor()

OCRmyPDF 使用自定义的并发执行器,该执行器可以使用相同的接口支持线程或进程。这很有用,因为 OCRmyPDF 可以使用线程或进程来并行化工作,具体取决于当前任务的更适合方式。

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