前言:由于要利用一些比较老的文献中的数据,手工输入费时费力,于是乎找到了下面的方法。如果不差钱可以使用Adobe Acrobat Reader中的文字识别,也可以尝试其中的试用版。下面的方法完全室开源免费的方式。
1. 准备工作:安装程序、软件包、配置环境变量
平台:win10, python 3.7.3, spyder3.3.3
安装软件包(用conda):pdf2image, pytesseract, numpy
配置环境变量:安装完tesseract后将其安装路径添加到path环境变量。方法自己搜
2. 过程简介
(1) 用pdf2image中的convert_from_path将pdf文件转化为ppm文件(图片)
(2)用numpy.array将ppm文件转化为三维矩阵
(3) 用pytesseract.image_to_string识别图像矩阵中的文字
(4)输出文本信息,并进行校对,可以借助word等软件进行拼写检测
3. 实操
代码如下
import numpy as np
import pytesseract
from pdf2image import convert_from_path
def pdf_ocr(fname, **kwargs):
images = convert_from_path(fname, **kwargs)
text = ''
for img in images:
img = np.array(img)
text += pytesseract.image_to_string(img)
return text
fname = 'example.pdf'
# text = pdf_ocr(fname, first_page=7, last_page=8)
text = pdf_ocr(fname)
print(text)
4. 参考资料
吐槽一下知乎:发表文章时只有两个选项:1. 虚构;2. 不声明原创。
有时候明明时原创,而且不是虚构。要想声明原创就必须选则虚构——瞎编的。难道原创的都是瞎编的吗?![]()
|