如何使用Python读取PDF收据中的商品编码?
提取PDF收据中的数字商品编码方案
第一步:提取PDF文本内容
优先直接从PDF提取文本,比转Word/TXT更靠谱。推荐用Python的pdfplumber(能更好保留文本结构)或PyMuPDF(处理速度快),示例代码:import pdfplumber def extract_pdf_text(pdf_path): text = "" with pdfplumber.open(pdf_path) as pdf: for page in pdf.pages: text += page.extract_text() or "" return text如果是扫描生成的PDF(本质是图片),转Word/TXT没用,得用OCR工具,比如Tesseract配合
pytesseract:import pytesseract from pdf2image import convert_from_path def ocr_scanned_pdf(pdf_path): pages = convert_from_path(pdf_path) text = "" for page in pages: text += pytesseract.image_to_string(page, lang='chi_sim+eng') # 根据收据语言调整参数 return text第二步:用正则匹配数字编码
针对纯数字编码,先假设编码是6-12位连续数字(可根据实际长度调整),用正则批量提取:import re def extract_product_codes(text): # 匹配6到12位连续数字,可修改数字范围适配你的编码 pattern = r'\b\d{6,12}\b' codes = re.findall(pattern, text) # 去重避免重复提取 return list(set(codes))如果编码有特定规律(比如固定开头数字),可以调整正则,比如
r'\b88\d{8}\b'匹配以88开头的10位编码。第三步:筛选有效编码
文本里可能混有金额、日期等无关数字,可通过以下方式过滤:- 找“商品编码”“货号”等关键词附近的数字;
- 用已知的编码范围(比如企业规定的编码区间)过滤;
- 手动校验少量结果,调整正则规则。
批量处理建议
若要处理大量PDF,可写循环遍历文件夹内所有文件,自动提取编码并导出到Excel/CSV文件。
内容的提问来源于stack exchange,提问作者JW JW
相关产品推荐
相关产品推荐

