Add OCR Text | 为大家带来一款专为PDF添加OCR文字的软件

缘起

有很多时候需要对PDF进行OCR识别,变成可搜索文档,受限于当前软件对中文的支持,中文OCR效果一致不是太好。
然而,当前在线的OCR服务,提供了各种高精度专业OCR接口,别外,当前也有各种优秀的本地OCR引擎。
利用各种在线或离线的OCR结果,为PDF添加OCR的想法逐产生,于是有了这款小软件。
优势所在:

  1. 采用C++, 速度保证
  2. 小巧玲珑「独立的二进制可执行文件仅 5.5 M」
  3. 通过命令行,方便快捷
  4. 源码简单,方便定制

为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 分隔。第一列是相关图片信息,若不在当前程序执行目录下,需要补全图片的相对或绝对路径信息,图片支持 jpgpngtif三种格式。第二列是对应文字信息,第三到六列对应矩形四个点的坐标信息,对应的坐标依次为:左下、右下、右上、左上,每对坐标用英文逗号分隔,即 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/ 目录下,不需要再额外安装,可直接在程序中调用

5 Likes