
如何用 Tesseract 命令行 --dpi 参数指定输入图像分辨率【免费下载链接】tesseractTesseract Open Source OCR Engine (main repository)项目地址: https://gitcode.com/GitHub_Trending/te/tesseract用 tesseract 命令行对图像做 OCR 时引擎做版面分析依赖图像的分辨率DPI。如果扫描或导出的图像没有写入分辨率元数据或者元数据不正确就可以用--dpi参数显式指定输入图像的分辨率。man 页面给出的典型值是 300。本文依据仓库内 doc/tesseract.1.asc 的用法说明并在行为细节处核对了源码。前提tesseract 已安装预编译包或源码构建并可用tesseract --version确认命令可用。--dpi 参数的作用与缺省行为man 页面对--dpi N的定义是Specify the resolution N in DPI for the input image(s). A typical value for N is300. Without this option, the resolution is read from the metadata included in the image. If an image does not include that information, Tesseract tries to guess it.即三种情况带--dpi N使用你指定的分辨率不带该参数且图像元数据里有分辨率从元数据读取元数据里没有Tesseract 尝试猜测。源码层面--dpi的值会被写入引擎参数user_defined_dpisrc/tesseract.cpp 中的api.SetVariable(user_defined_dpi, ...)该参数定义在 src/ccmain/tesseractclass.cpp描述为 Specify DPI for input image。只要设置了该参数引擎会直接使用用户给定的值见 src/api/baseapi.cpp 中的 Always use user defined dpi 逻辑。执行步骤命令基本形式来自 man 页面 SYNOPSIStesseract FILE OUTPUTBASE [OPTIONS]... [CONFIGFILE]...FILE是输入文件Leptonica 可读的图像或逐行列出图像名的文本文件OUTPUTBASE是输出基名。1. 指定 DPI 运行基本识别tesseract image.png demo --dpi 300image.png是 man 页面示例中使用的图像文件名替换为你自己的输入图像demo是输出基名。默认情况下会在当前目录生成demo.txtman 页面说明默认输出是 OUTPUTBASE 加.txt后缀的文本文件。2. 与语言、版面模式参数组合tesseract myimage.png myimage -l eng --dpi 300-l指定识别语言不指定时默认为eng。man 页面有一条明确约束-l LANG与--psm N必须出现在任何 CONFIGFILE 之前所以--dpi等普通选项按 SYNOPSIS 放在 OUTPUTBASE 之后即可。3. 可选用 -c 写同一参数man 页面还支持-c CONFIGVARVALUE允许多个-c。--dpi 300等价于tesseract image.png demo -c user_defined_dpi300参数名user_defined_dpi来自源码src/tesseract.cpp 中对--dpi的解析最终传给的就是这个变量两种写法作用于同一个值。4. 可选输入是图像列表文件若FILE是逐行列出图像名的文本文件man 页面称--dpi作用于 input image(s)即列表中所有输入图像各格式的结果会合并到同一输出文件中。验证 --dpi 是否生效先确认选项存在tesseract --help帮助文本中应包含该文本见 src/tesseract.cpp--dpi VALUE Specify DPI for input image.执行第 1 步的命令后当前目录出现demo.txt说明识别按预期完成。man 页面还说明 OUTPUTBASE 可写为stdout或-让结果直接输出到终端。如果 N 超出可信分辨率区间运行时会打印警告。区间定义在 include/tesseract/publictypes.hkMinCredibleResolution 70、kMaxCredibleResolution 2400警告文本为Warning: User defined image dpi is outside of expected range (70 - 2400)!警告之后引擎仍会使用你指定的值src/api/baseapi.cpp即 70–2400 是告警区间不是硬性限制。限制与边界典型值为 300 DPI70–2400 是源码中的可信分辨率区间超出只告警、不拦截。不写--dpi时元数据分辨率同样会被检查源码显示元数据值超出区间且非零时会提示Warning: Invalid resolution %d dpi. Using 70 instead.并回退到 70 DPIsrc/api/baseapi.cpp元数据完全缺失时则由引擎猜测man 页面。--dpi只指定输入分辨率不决定输出格式输出格式由 CONFIGFILE如pdf、tsv、hocr或默认 txt 决定。README.md 提醒要获得更好的 OCR 结果往往需要先提高输入图像本身的质量文档没有承诺 DPI 取值与识别准确率之间的具体关系不要把改大 --dpi当作准确率调手段。【免费下载链接】tesseractTesseract Open Source OCR Engine (main repository)项目地址: https://gitcode.com/GitHub_Trending/te/tesseract创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考