Ocr 将Tesseract函数拆分为2列

Ocr 将Tesseract函数拆分为2列,ocr,tesseract,python-tesseract,Ocr,Tesseract,Python Tesseract,我想使用PyTesseract和OpenCV将(数百)页的信息读入JSON或CSV。我如何让特塞法知道中间的实线划分了两列信息?此外,有些数据行是2行而不是1行。最好的解释方法是什么 我对使用tesseract相当陌生,任何帮助都将不胜感激 编辑 这就是我现在拥有的: # OCR txt = pytesseract.image_to_string(thr, config="--psm 11") # Add ocr to the corresponding part tx

我想使用PyTesseract和OpenCV将(数百)页的信息读入JSON或CSV。我如何让特塞法知道中间的实线划分了两列信息?此外,有些数据行是2行而不是1行。最好的解释方法是什么

我对使用tesseract相当陌生,任何帮助都将不胜感激


编辑 这就是我现在拥有的:

# OCR
txt = pytesseract.image_to_string(thr, config="--psm 11")

# Add ocr to the corresponding part
txt = txt.split("\n")

row = 0
col = 0

for txt1 in txt:

    # Skip over OCR strings that are just spaces or ''
    if txt1.isspace() or txt1 == '':
        continue

    # Hard code detection in...let's just place it into the last column for now
    # Theoretically, the state ("Alaska" in this case) will be in column 0 in the same row
    if re.match(r"\d*\sOpen\sRestaurants", txt1):
        col == 3
        
    worksheet.write(row//4, col%4, txt1)
    col += 1
    row += 1

workbook.close()
此代码块之上的所有内容都是相同的

然而,仍然存在许多未对齐的情况,特别是当某些地址或名称占用多行时。此外,为什么第一行的文本与其他行的读取顺序不同

我在想,也许我可以强制每四个txt按字母顺序排列,并使用它来检测未对齐?但是,即使第一行是不正确的,我也不确定我有多希望硬编码更正。此外,有时多行条目来自地址列,而有时多行条目来自名称列(例如,页面左侧的258州际商业园区环路)

下面是左侧一些混乱的屏幕截图:

右边:

  • 我想使用PyTesseract和OpenCV将(数百)页的信息读入JSON或CSV
您有多种选择,xlswriter、pandas等。例如,您可以查看For
xlswriter

    如何让TESSSEACT知道中间的实线分割两列信息?
你不能。您需要手动将图像按宽度分成两部分。例如:

如何手动按宽度分割图像

首先获取图像的大小,然后设置索引

#获取大小
(h,w)=图像形状[:2]
#第一部分
第一部分=img[0:h,0:int(w/2)]
#第二部分
第二部分=img[0:h,int(w/2):w]
  • 此外,有些数据行是2行而不是1行。最好的解释方法是什么
Tesseract将对此进行说明,但您需要了解以下内容:


输入图像不包含任何伪影。因此,乍一看,图像预处理似乎是不必要的。你仍然可以申请,以确保获得最佳的准确性

第一部分 第2部分 北坡。13620号公路43号北哈迪克库马尔帕特尔(205)339-1188
北港1836麦克法兰大道哈里库马尔帕特尔{205}339-1782
北港5550麦克法兰大道沙米什塔帕特尔(205)200-7822
奥登维尔130委员会奥里夫·格拉顿路堡(205)629-7827625.5847

velxa 1017哥伦布公园路路易斯克里布(934)749-3628

阿尔卡2300网关或唐娜克里布(234)749-2308
Utpa斯图尔特大街101号pp!帕特尔{334}433-7325,
奥兰治海滩25755佩尔迪多海滩私人有限公司帕特里克·谢德(251)981-6881
奥兰治海滩25814运河路帕特里克棚(251)91-4184
欧文斯十字路口6707 Hwy 43)南理查德·海德(256)519-2425
拥有总道路330萨顿路理查德·海德(256)518-2004


。 塔拉德加244海恩斯土斯克利普(258}315-0191
塔拉德加608东巴特勒街路易斯克里布(256)362-0781
塔拉塞454吉梅尔大街多纳克里布(334)283-2067
坦纳5956 Hwy 31 N迈克·纳德西(256)352-9808
托拉尼1806平安谷圣杰纳特(205)849-0112854-0048,
西奥多6860西奥多·道斯路安东尼·拉夫·埃尼尔(251)853-2010
塔马斯维尔33202公路43兰吉夫·阿查里亚(334)636-0333
托马斯维尔3430S Huy 43兰吉夫·阿查里亚(334)636-0830
提乌斯80土斯路阁楼格雷(G34)514-9930
镇溪2795公路20马德哈夫·梅纳(256)686-3900
特洛伊1003号公路231南路易斯克里布(339)568-7944
特洛伊1420美国231南德化帕特尔(334)670-6390
……
  • 我想使用PyTesseract和OpenCV将(数百)页的信息读入JSON或CSV
您有多种选择,xlswriter、pandas等。例如,您可以查看For
xlswriter

    如何让TESSSEACT知道中间的实线分割两列信息?
不能。您需要手动将图像按宽度分成两部分。例如:

如何手动按宽度分割图像

首先获取图像的大小,然后设置索引

#获取大小
(h,w)=图像形状[:2]
#第一部分
第一部分=img[0:h,0:int(w/2)]
#第二部分
第二部分=img[0:h,int(w/2):w]
  • 此外,有些数据行是2行而不是1行。最好的解释方法是什么
Tesseract将对此进行说明,但您需要了解以下内容:


输入图像不包含任何伪影。因此,乍一看,图像预处理似乎是不必要的。您仍然可以应用以确保获得最佳精度

第一部分 第2部分 北港13620号公路43号北哈迪克库马尔·帕特尔(205)339-1188
北港1836麦克法兰大道哈里库马尔·帕特尔(205)339-1782
北港5550麦克法兰大道沙米什塔·帕特尔(205)200-7822
奥登维尔130委员会奥里夫·格拉顿·科博(205)629-7827
625.5847

velxa 1017哥伦布公园路路易斯·克里布(934)749-3628

alka 2300 Gateway或唐娜·克里布(234)749-2308
乌塔帕斯图尔特大街101号帕特尔433-7325,
奥兰治海滩25755佩尔迪多海滩私人有限公司帕特里克·谢德(251)981-6881
奥兰治海滩25814运河帕特里克路谢德(251)91-4184
欧文斯十字路口6707 Hwy 43)南理查德海德(256)519-2425