如何用Pandas框架处理菜单生成账单:提取luxury前置项至receipt列表
使用Pandas处理菜单提取指定菜品到账单
1. 先把图片菜单转成可处理的结构化数据
因为你提供的是图片格式的菜单,第一步得用OCR工具提取文本,再转成Pandas的DataFrame。这里用pytesseract来实现,先装依赖:
- 安装Python包:
pip install pytesseract pillow pandas - 安装Tesseract OCR引擎:Windows去官网下载安装包,Ubuntu用
sudo apt install tesseract-ocr,Mac用brew install tesseract
提取文本并转DataFrame的代码:
import pytesseract from PIL import Image import pandas as pd # 读取本地保存的菜单图片(先把图片下载下来命名为menu.png) img = Image.open("menu.png") # 提取图片里的文本 menu_raw_text = pytesseract.image_to_string(img) # 按行拆分并过滤空行,得到菜单的每一项 menu_items = [line.strip() for line in menu_raw_text.split("\n") if line.strip()] # 转成Pandas DataFrame menu_df = pd.DataFrame(menu_items, columns=["content"])
2. 查找"luxury"并提取前一项到receipt列表
遍历DataFrame,找到包含"luxury"的行,把它的前一项加入receipt:
receipt = [] for index, row in menu_df.iterrows(): # 不区分大小写查找,避免大小写问题漏找 if "luxury" in row["content"].lower(): # 确保不是第一行,防止索引越界 if index > 0: receipt.append(menu_df.iloc[index-1]["content"]) # 查看结果 print("Receipt内容:", receipt)
注意事项
- 如果OCR识别出来的文本有错误,比如把"luxury"识别成别的词,可以手动修正文本,或者先调整图片的对比度、清晰度再识别。
- 如果菜单有固定格式(比如菜品名和标签分开列),可以进一步拆分DataFrame的列,让查找更精准。
内容的提问来源于stack exchange,提问作者Shamim
相关产品推荐
相关产品推荐

