缘起
有很多时候需要对PDF进行OCR识别,变成可搜索文档,受限于当前软件对中文的支持,中文OCR效果一致不是太好。
然而,当前在线的OCR服务,提供了各种高精度专业OCR接口,别外,当前也有各种优秀的本地OCR引擎。
利用各种在线或离线的OCR结果,为PDF添加OCR的想法逐产生,于是有了这款小软件。
优势所在:
- 采用C++, 速度保证
- 小巧玲珑「独立的二进制可执行文件仅 5.5 M」
- 通过命令行,方便快捷
- 源码简单,方便定制
为Linux平台编译了独立二进制文件,可适用于各系统:
Linux_amd64_add_ocr_text.tar.gz (1.9 MB)
其它平台「Mac 、Windows」,我这里没有相应环境,暂缺
项目地址:Add OCR Text: Add OCR Text
Add OCR Text
简介
当前各种 OCR 引擎识别图片时,可返回带坐标的文字,本程序主要是将图片封装到 PDF 文档中,并将 OCR 文字添加上,合成为可供搜索的 PDF 文件,为保证速度,用 C++
开发。
说明
基本用法:
add_ocr_text -i ocr.txt -f OpenSans-Regular.ttf
最少需要指定两个参数:
ocr.txt
是带图片、文字、坐标信息的文本文件,格式如下
22.png Graduate 263,172 337,172 337,159 263,159
22.png School 345,172 398,172 398,159 345,159
22.png of 404,176 420,176 420,159 404,159
22.png Science, 426,174 489,174 489,159 426,159
33.png C++教程 94,273 168,273 168,254 94,254
33.png HTML/CSS 1537,275 1625,275 1625,258 1537,258
33.png C++简介 92,315 168,315 168,296 92,296
33.png 学习园地 462,313 521,313 521,298 462,298
共 6 列,每列间用 Tab
分隔。第一列是相关图片信息,若不在当前程序执行目录下,需要补全图片的相对或绝对路径信息,图片支持 jpg
、png
、tif
三种格式。第二列是对应文字信息,第三到六列对应矩形四个点的坐标信息,对应的坐标依次为:左下、右下、右上、左上,每对坐标用英文逗号分隔,即 x,y
。
OpenSans-Regular.ttf
是需要指定的字体文件,以此字体文件写入 PDF 中的文字信息,字体的大小与复杂成度,会直接影响生成 PDF 文件的速度
注意,不同的 OCR 引擎对应的坐标原点不同,默认坐标原点的处理与百度 OCR 服务一致,以左上角为坐标原点,即参数 -l, --location
的默认值为 4
,若使用的 OCR 引擎的坐标原点有变化,请通过 -l, --location
来指定:左下为1
、右下为2
、右上为3
、左上为4
。
全部可选参数如下:
Usage: add_ocr_text [--help] [--version] --input VAR --font VAR [--output VAR] [--location VAR] [--page VAR] [--box] [--tuning VAR...]
Optional arguments:
-h, --help shows help message and exits
-v, --version prints version information and exits
-i, --input specify the input text file. [required]
-f, --font specify the font file. [required]
-o, --output specify the output PDF file. [default: "out.pdf"]
-l, --location Specify the origin location of the image.
lower-left:1 lower-right:2 upper-right:3 upper-left:4 [default: 4]
-p, --page Specify page size, such as A3, A4, A5, B3, B4, B5. [default: "A4"]
-b, --box Draw a rectangular text box to fine tune its size.
-t, --tuning Fine tune the position of the text box in pixels, x y. [nargs: 2] [default: {0 0}]
依赖
本程序,PDF 处理依赖于项目 PDF-Writer 「版本 v4.6.7」,参数处理依赖于项目 argparse 「版本 v3.1」
相关依赖都已包含在项目中,在 local/
目录下,不需要再额外安装,可直接在程序中调用