本文主要是介绍Python使用pdfminer库解析pdf得到的一大堆CID和数字如何处理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这个是我识别pdf的代码
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.layout import LTTextBox, LAParams
from pdfminer.converter import PDFPageAggregator
from loguru import logger
import repdf_path = r'C:\Users\17875\Desktop\100159_12E1X80009000024_A_01_05.pdf'
# 打开pdf文件
fp = open(pdf_path, 'rb')# 从文件句柄创建一个pdf解析对象
parser = PDFParser(fp)
# 创建pdf文档对象,存储文档结构
document = PDFDocument(parser)# 创建一个pdf资源管理对象,存储共享资源
rsrcmgr = PDFResourceManager()laparams = LAParams()# 创建一个device对象
device = PDFPageAggregator(rsrcmgr, laparams=laparams)# 创建一个解释对象
interpreter = PDFPageInterpreter(rsrcmgr, device)# 处理包含在文档中的每一页
for page in PDFPage.create_pages(document):interpreter.process_page(page)layout = device.get_result()for x in layout:# 获取文本对象if isinstance(x, LTTextBox):text = x.get_text().strip()logger.info(text)
fp.close()
可是得到的结果是一大堆cid和数字
解决方法
使用chr(int(123))
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdfpage import PDFPage
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.layout import LTTextBox, LAParams
from pdfminer.converter import PDFPageAggregator
from loguru import logger
import re# pdf_path = r'C:\Users\17875\Desktop\众成资料\日本\pdf日本\体外试剂\100159_12E1X80009000024_A_01_05.pdf'
pdf_path = r'C:\Users\17875\Desktop\众成资料\日本\pdf日本\体外试剂\100148_14A2X00001FIB001_A_F1_05.pdf'
# 打开pdf文件
fp = open(pdf_path, 'rb')# 从文件句柄创建一个pdf解析对象
parser = PDFParser(fp)
# 创建pdf文档对象,存储文档结构
document = PDFDocument(parser)# 创建一个pdf资源管理对象,存储共享资源
rsrcmgr = PDFResourceManager()laparams = LAParams()# 创建一个device对象
device = PDFPageAggregator(rsrcmgr, laparams=laparams)# 创建一个解释对象
interpreter = PDFPageInterpreter(rsrcmgr, device)# 处理包含在文档中的每一页
for page in PDFPage.create_pages(document):interpreter.process_page(page)layout = device.get_result()for x in layout:# 获取文本对象if isinstance(x, LTTextBox):text = x.get_text().strip()if 'cid' in text:# 找到cid后面的数字number = re.findall(r'\d+', text)result = [chr((int(i))) for i in number]logger.info(result)logger.info(text)
fp.close()
结果如下:
但是还不是很准确,假如有更好的方法,请分享一下
这篇关于Python使用pdfminer库解析pdf得到的一大堆CID和数字如何处理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!