使用 OCR 的一些记录
0. 问题
需要对一篇扫描件里的内容进行识别和提取,以下是一些记录。
1. PDF 转换成图片
文档资料是 PDF 格式的,首先需要先截取页面并转换成图片。
1. 使用 qpdf
qpdf 可以从一篇 PDF 里截取某些页面,并转存为 PDF 格式。
安装 qpdf 软件包:
sudo apt install qpdf
截取。比如从 a.pdf 里,截取第 30 页至第 35 页,并另存为 b.pdf:
qpdf a.pdf --pages a.pdf 30-35 -- b.pdf
2. PDF 转换成图片
安装 poppler-utils
软件包:
sudo apt install poppler-utils
转换成图片:
pdftoppm b.pdf output -png
2.1. 使用 tesseract 识别
编译并安装 tesseract:
这里有编译过程的描述说明。
git clone --recurse-submodules https://github.com/tesseract-ocr/tesseract.git
cd tesseract
./autogen.sh
./configure --prefix=$HOME/local/
make
make install
下载语言文件:
这里有说明,需要下载中文相关的文件,并保存到 ${HOME}/local/share/tessdata/
目录下。当然也有 tessdata_best
和 tessdata_fast
可以使用。
运行软件:
export TESSDATA_PREFIX=${HOME}/local/share/tessdata
./tesseract input.png - -l chi_sim+eng | tee -a output.txt
识别出来的文本,在 output.txt
文件里面。
2.2. 使用 chineseocr_lite 识别
开源项目 chineseocr_lite,是一个超轻量级中文 ocr,支持竖排文字识别。
项目地址:https://github.com/DayBreak-u/chineseocr_lite
安装过程:
// 先安装 python3.6 的虚拟环境
git clone https://github.com/DayBreak-u/chineseocr_lite.git
cd chineseocr_lite
pip3 install -r requirements.txt
使用:
python backend/main.py
通过浏览器访问即可。
改造程序:
之前步骤里已经把页面转存为图片了,以下代码片断里,就是对每一张图片,使用 model.py
里实现的 OcrHandle
来完成识别:
from model import OcrHandle
for filename in sorted(glob.glob('*.png')):
f = open(filename, 'rb')
img = Image.open(f)
result = ocrhandle.text_predict(img, short_size)
print(result)
result
变量里有完整的信息,按实际需求解析即可。
2.3. 使用 EasyOCR 识别
开源项目 EasyOCR,项目地址:https://github.com/jaidedai/easyocr
安装过程:
pip3 install easyocr
依赖项目都会自动安装。
使用:
import easyocr
reader = easyocr.Reader(['ch_sim','en'])
result = reader.readtext('input.jpg', detail=0)
print(result)
2.4. 使用 MinerU 识别
开源项目 MinerU,项目地址:https://github.com/opendatalab/MinerU
安装过程:
// 先安装 python3.10 的虚拟环境
conda create -n mineru python=3.10
conda activate mineru
pip install -U magic-pdf[full] --extra-index-url https://wheels.myhloli.com
安装时碰到过一个问题,如果尝试按惯例安装 pip install magic-pdf
,安装出来的版本很低,只有 0.6.1,跟文档里的使用说明对不上。
下载模型权重文件:
按照这篇文档来下载:
pip install modelscope
wget https://gcore.jsdelivr.net/gh/opendatalab/MinerU@master/scripts/download_models.py -O download_models.py
python download_models.py
下载的模型在 ~/.cache/huggingface/hub
目录下。另外,用户目录下会生成 magic-pdf.json
配置文件。
使用:
$ magic-pdf --help
Usage: magic-pdf [OPTIONS]
Options:
-v, --version display the version and exit
-p, --path PATH local filepath or directory. support PDF, PPT,
PPTX, DOC, DOCX, PNG, JPG files [required]
-o, --output-dir PATH output local directory [required]
-m, --method [ocr|txt|auto] the method for parsing pdf. ocr: using ocr
technique to extract information from pdf. txt:
suitable for the text-based pdf only and
outperform ocr. auto: automatically choose the
best method for parsing pdf from ocr and txt.
without method specified, auto will be used by
default.
-l, --lang TEXT Input the languages in the pdf (if known) to
improve OCR accuracy. Optional. You should
input "Abbreviation" with language form url: ht
tps://paddlepaddle.github.io/PaddleOCR/latest/e
n/ppocr/blog/multi_languages.html#5-support-
languages-and-abbreviations
-d, --debug BOOLEAN Enables detailed debugging information during
the execution of the CLI commands.
-s, --start INTEGER The starting page for PDF parsing, beginning
from 0.
-e, --end INTEGER The ending page for PDF parsing, beginning from
0.
--help Show this message and exit.
比如:
magic-pdf -p input -o output -m ocr -s 100 -e 102
运行结束后,生成的结果在 output 目录下。