使用pytesseract转换TIF到PDF报错:cid not made from file
Tesseract 5.3.1转换TIF到PDF报错:Error in l_generateCIDataForPdf: cid not made from file
问题原因
该错误源于Tesseract生成PDF时的CID字体处理逻辑异常,常见触发场景包括:
- Ubuntu 18.04默认依赖的Leptonica版本过旧,与Tesseract 5.3.1的PDF生成模块兼容性不匹配,导致无法正确生成CID字体数据;
- 待转换的TIF文件存在格式异常(如多页编码问题、非标准压缩格式),干扰了Tesseract的解析流程;
- Tesseract的PDF生成参数配置不当,未指定正确的字体或OCR引擎模式。
解决办法
1. 升级依赖库
更新系统包并安装适配的Leptonica和Tesseract依赖:
sudo apt update && sudo apt upgrade sudo apt install libtesseract-dev libleptonica-dev
若默认源提供的Leptonica版本仍低于1.82.0,需从源码编译安装最新版Leptonica后重新编译Tesseract 5.3.1。
2. 预处理TIF文件
将TIF转换为更易兼容的格式(如PNG)后再处理,以规避TIF格式的特殊性:
# 使用ImageMagick拆分多页TIF为单页PNG convert input.tif output_%02d.png
之后通过pytesseract逐个处理单页图片,再用第三方库(如PyPDF2)合并为最终PDF。
3. 调整OCR参数
调用image_to_pdf_or_hocr时指定完整的OCR引擎模式、页面分割模式及字体参数:
import pytesseract from PIL import Image image = Image.open("input.tif") pdf_content = pytesseract.image_to_pdf_or_hocr( image, extension="pdf", config="--oem 3 --psm 6 -c pdf_font_name=\"Arial\"" ) with open("output.pdf", "wb") as f: f.write(pdf_content)
4. 降级Tesseract版本
若升级依赖成本过高,可降级到Ubuntu 18.04源中兼容性更稳定的Tesseract 4.x版本:
sudo apt remove tesseract-ocr sudo apt install tesseract-ocr=4.00~git2288-10f4998a-2
内容的提问来源于stack exchange,提问作者Nirali
相关产品推荐
相关产品推荐

