使用python解析pdf文档中的单词导入到有道云词典中

本文介绍如何使用Python将PDF文档中的单词解析出来,并转化为有道云词典的XML生词本格式。通过pymupdf库将PDF转为PNG,再利用百度OCR API识别图片中的文字,提取单词,最后生成XML文件。虽然存在识别率问题,但已能实现80%的成功率,适合备考和快速整理单词。
摘要由CSDN通过智能技术生成

笔者最近在备考关于100天后专升本考试,对于现在疫情影响,辅导班也开了对应的网课,笔者从辅导班回家的时候一本书都没有拿,后来老师在群里发了纸质书的pdf版本,让我们背单词,在学习单词的时候不会读音要一个一个去有道云等等相关软件翻译找到读音是一件比较麻烦和浪费时间的事情,便有了此文 我整个写完代码时间大概用了4个小时左右 共计150多行的python代码

思路为:PDF->PNG->txt->xml
将老师发来的pdf版本转换为图片,再用识图解析成txt文本,再用正则表达式提取单词到txt中,最后再解析成可被有道云识别的xml生词本格式。

1.pdf Convert to png
依赖库:pip install pymupdf

import sys, fitz
import os
import datetime
def pdf_convert_png(pdfPath, imagePath):
    startTime_pdf2img = datetime.datetime.now()#开始时间
    print("imagePath="+imagePath)
    pdfDoc = fitz.open(pdfPath)
    for pg in range(pdfDoc.pageCount):
        page = pdfDoc[pg]
        rotate = int(0)
        # 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。
        # 此处若是不做设置,默认图片大小为:792X612, dpi=96
        zoom_x = 1.33333333 #(1.33333333-->1056x816)   (2-->1584x1224)
        zoom_y = 1.33333333
        mat = fitz.Matrix(zoom_x, zoom_y).preRotate(rotate)
        pix = page.getPixmap(matrix=mat, alpha=False)
        
        if not os.path.exists(imagePath):#判断存放图片的文件夹是否存在
            os.makedirs(imagePath) # 若图片文件夹不存在就创建
        
        pix.writePNG(imagePath+'/'+'images_%s.png' % pg)#将图片写入指定的文件夹内
        
    endTime_pdf2img = datetime.datetime.now()#结束时间
    print('pdf2img时间=',(endTime_pdf2img - startTime_pdf2img).seconds)
 

读取所在目录下所有类型是pdf的文件返回一个包含所有pdf路径的list

def reload_pdf_path(pdfPath):
    pdf_files = []; #存储将要转换pdf的名称
    for filename in os.listdir(pdfPath):
        if filename.endswith('pdf'):
            pdf_files.append(filename);
    return pdf_files;

 转换结果:

我擦9-16pdf在末尾了,这可不行 倒时候要按组排序整进去呢 用了List.sort方法也不行 艹

 用正则排序:

pdf_files = sorted(pdf_files,key = lambda i:int(re.match(r'(\d+)',i).group()))

print(pdf_files);

效果:

呵呵 我真是个带天才

 转换了一共12篇pdf

可还行一个没有漏

简单封装下代码留着一会用

2.图文识别【OCR识别】
简单看了下其他博主写的图文识别,觉得效果都不太好,像我这种图片那么复杂的估计会很难识别࿰

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值