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

**URL:** <https://forum.freemdict.com/t/topic/34811>\
**Category:** 软件经验交流展望\
**Tags:** linux, ocr, 文字识别, 软件, pdf, 分享\
**Created:** [2024 年12 月 13 日 13:58 UTC](https://forum.freemdict.com/t/topic/34811 "2024-12-13T13:58:14Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

作者： ![ylxdxx](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/y/b2d939/32.png) [@ylxdxx](https://forum.freemdict.com/u/ylxdxx)\
发布日期： [2024 年12 月 13 日 13:58 UTC](https://forum.freemdict.com/t/topic/34811/1 "2024-12-13T13:58:14Z")

</div>

# 缘起

有很多时候需要对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](https://forum.freemdict.com/uploads/short-url/r81tKLG8aPNBIz0I1wm610j2biX.gz) (1.9 MB)

其它平台「Mac 、Windows」，我这里没有相应环境，暂缺

项目地址：[https://gitee.com/ylxdxx/Add\_OCR\_Text](https://gitee.com/ylxdxx/Add_OCR_Text)

# Add OCR Text

## 简介

当前各种 OCR 引擎识别图片时，可返回带坐标的文字，本程序主要是将图片封装到 PDF 文档中，并将 OCR 文字添加上，合成为可供搜索的 PDF 文件，为保证速度，用 `C++` 开发。

## 说明

基本用法：

```auto
add_ocr_text -i ocr.txt -f OpenSans-Regular.ttf

```

最少需要指定两个参数：

- `ocr.txt` 是带图片、文字、坐标信息的文本文件，格式如下

```auto
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`。

全部可选参数如下：

```auto
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](https://gitee.com/link?target=https%3A%2F%2Fgithub.com%2Fgalkahana%2FPDF-Writer) 「版本 [v4.6.7](https://gitee.com/link?target=https%3A%2F%2Fgithub.com%2Fgalkahana%2FPDF-Writer%2Freleases%2Ftag%2Fv4.6.7)」，参数处理依赖于项目 [argparse](https://gitee.com/link?target=https%3A%2F%2Fgithub.com%2Fp-ranav%2Fargparse) 「版本 [v3.1](https://gitee.com/link?target=https%3A%2F%2Fgithub.com%2Fp-ranav%2Fargparse%2Ftree%2Fv3.1)」

相关依赖都已包含在项目中，在 `local/` 目录下，不需要再额外安装，可直接在程序中调用

---

<div class="post-metadata">

作者： ![MajoranaOedipus](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/m/48db29/32.png) [@MajoranaOedipus](https://forum.freemdict.com/u/MajoranaOedipus)\
发布日期： [2025 年7 月 12 日 12:39 UTC](https://forum.freemdict.com/t/topic/34811/2 "2025-07-12T12:39:52Z")

</div>

请教一下，因为我并不熟悉 pdf 相关的技术。  
您的输入txt中第一列是图片。意思是说，需要将原pdf 文件拆成图像，ocr 之后，再通过您的程序合成成 pdf 是这个意思吗？

---

<div class="post-metadata">

作者： ![ylxdxx](https://forumcdn.freemdict.com/letter_avatar_proxy/v4/letter/y/b2d939/32.png) [@ylxdxx](https://forum.freemdict.com/u/ylxdxx)\
发布日期： [2026 年6 月 7 日 12:42 UTC](https://forum.freemdict.com/t/topic/34811/3 "2026-06-07T12:42:34Z")

</div>

是的，这个软件是为某些特殊目的构建的，需要你拿到相关图片、图片中的文字（带坐标）  
，该软件的功能就是将图片合并成PDF，并在PDF的页面上将OCR后的文字给放上去，从而形成可搜索的双层PDF  
对于一般的图片PDF转双层，建议用其它更成熟的工具，如 Umi-OCR，可以参看论坛的贴子： [用 PaddleOCR 生成双层 pdf](https://forum.freemdict.com/t/topic/43792)
