将 pytesseract 字符串输出转换为 pandas df
Convert pytesseract string output to pandas df
我收到了 Subway 的全天详细销售、工人等收据,需要提取数据进行管理 class。
我拍了收据的照片并用 pytesseract 将它们处理成以 \n 分隔的字符串,但现在不知道如何使用 pd.read_csv 和 StringIO 将其转换为数据帧。如果这是最好的解决方法,请不要这样做。还可能需要使用 cv2 编辑图像,以便更好地处理。
import numpy as np
import pytesseract
from PIL import Image
import pandas as pd
path = 'C:\attachments\'
monday = pytesseract.image_to_string(Image.open(path+'file1-1.jpeg'),lang='eng')
from StringIO import StringIO
mon = pd.read_csv(StringIO(monday),sep=r'\s',lineterminator=r'\n')
print(mon)
这是目前周一的一些变数。
"\nTIME HOURS :\nPERIOD SALES UNITS WORKED PROD SPLH\nZhan emmoo «Ct (iti ;:t‘«é‘«‘i CSD\n3A-4A [=12=].00 0 0 0 [=12=].00\n44-54 =: [=12=].00 SssOO 0 0 [=12=].00\n5A-6A [=12=].00 0 0 0 [=12=].00\nbA-7A [=12=].00 0 0 0 [=12=].00\n7A-BA =s«[=12=].00-Sss«OOs«*O0.80 0 [=12=].00\nBA-9A 60,00 . Qge2.00 0 [=12=].00\nQA-10A .68 6 2,00 3.00 .84\n104-114 .07 9 2.13 4.23 .67\n11A-12P8.82 33 5,00 6.60 .76"
数据框应该是这样的:
Period Sales Units Worked Prod SPLH
3A-4A [=13=].00 0 0 0 [=13=].00
bA-7A [=13=].00 0 0 0 [=13=].00
您可以将 tesseract 的结果直接放入 Pandas 数据帧中:
monday = pytesseract.image_to_data(Image.open(path+'file1-1.jpeg'),lang='eng', output_type='data.frame')
现在 monday
是一个数据框,但是它需要您进行更多处理,因为它至少包含层次结构中每个级别的一行。检查输出并查看您希望如何组织它。
我收到了 Subway 的全天详细销售、工人等收据,需要提取数据进行管理 class。
我拍了收据的照片并用 pytesseract 将它们处理成以 \n 分隔的字符串,但现在不知道如何使用 pd.read_csv 和 StringIO 将其转换为数据帧。如果这是最好的解决方法,请不要这样做。还可能需要使用 cv2 编辑图像,以便更好地处理。
import numpy as np
import pytesseract
from PIL import Image
import pandas as pd
path = 'C:\attachments\'
monday = pytesseract.image_to_string(Image.open(path+'file1-1.jpeg'),lang='eng')
from StringIO import StringIO
mon = pd.read_csv(StringIO(monday),sep=r'\s',lineterminator=r'\n')
print(mon)
这是目前周一的一些变数。
"\nTIME HOURS :\nPERIOD SALES UNITS WORKED PROD SPLH\nZhan emmoo «Ct (iti ;:t‘«é‘«‘i CSD\n3A-4A [=12=].00 0 0 0 [=12=].00\n44-54 =: [=12=].00 SssOO 0 0 [=12=].00\n5A-6A [=12=].00 0 0 0 [=12=].00\nbA-7A [=12=].00 0 0 0 [=12=].00\n7A-BA =s«[=12=].00-Sss«OOs«*O0.80 0 [=12=].00\nBA-9A 60,00 . Qge2.00 0 [=12=].00\nQA-10A .68 6 2,00 3.00 .84\n104-114 .07 9 2.13 4.23 .67\n11A-12P8.82 33 5,00 6.60 .76"
数据框应该是这样的:
Period Sales Units Worked Prod SPLH
3A-4A [=13=].00 0 0 0 [=13=].00
bA-7A [=13=].00 0 0 0 [=13=].00
您可以将 tesseract 的结果直接放入 Pandas 数据帧中:
monday = pytesseract.image_to_data(Image.open(path+'file1-1.jpeg'),lang='eng', output_type='data.frame')
现在 monday
是一个数据框,但是它需要您进行更多处理,因为它至少包含层次结构中每个级别的一行。检查输出并查看您希望如何组织它。