如何将pytesseract提取的文本转换为指定列的DataFrame?
解决方法
步骤1:清理无效数据
先过滤列表里的空字符串、换页符(\x0c)这类无效内容,只保留有效文本:
# 过滤空字符串和换页符 cleaned_list = [item for item in list_word if item.strip() != '' and item != '\x0c']
执行后cleaned_list会变成:
['Moustafa', 'Engineer', 'Upwork Company', 'Ahmed', 'Teacher', 'School']
步骤2:按固定长度分组
观察数据结构,每3个元素对应一组name/job/company,按步长3拆分列表:
# 每3个元素为一组 grouped_data = [cleaned_list[i:i+3] for i in range(0, len(cleaned_list), 3)]
分组后的结果:
[['Moustafa', 'Engineer', 'Upwork Company'], ['Ahmed', 'Teacher', 'School']]
步骤3:转换为DataFrame
用pandas将分组后的列表转换成指定列名的DataFrame:
import pandas as pd df = pd.DataFrame(grouped_data, columns=['name', 'job', 'company'])
最终得到的DataFrame结构:
| name | job | company |
|---|---|---|
| Moustafa | Engineer | Upwork Company |
| Ahmed | Teacher | School |
完整代码
把所有步骤整合:
import pytesseract import pandas as pd # 假设image是已加载的图片对象 extractedInformation = pytesseract.image_to_string(image, lang='eng') list_word = extractedInformation.split('\n') # 清理数据 cleaned_list = [item for item in list_word if item.strip() != '' and item != '\x0c'] # 分组 grouped_data = [cleaned_list[i:i+3] for i in range(0, len(cleaned_list), 3)] # 转DataFrame df = pd.DataFrame(grouped_data, columns=['name', 'job', 'company']) print(df)
内容的提问来源于stack exchange,提问作者Moustafa Abada
相关产品推荐
相关产品推荐

