将列中提取的文本设置为 Pytesseract 中的单个字符串

Set the extracted text in a column As a Single String in Pytesseract

所以我从一个有 3 列的图像中提取了字符串。 提取的文本是: 科目成绩期末成绩学分 高等微积分 1 1.54 A 3 我想在这些项目之间放置一个分隔符,它应该如下所示: 科目、年级、期末成绩、学分 高等微积分 1, 1.54, A, 3

我们可以分两步来解决。

    1. 指定起始关键字。
    1. 使用 space 作为分隔符拆分行。

如果我们从评论中查看提供的示例:

我们不需要任何图像预处理,因为图像中没有伪影。

假设我想用逗号分隔以“state”开头的行。

    1. 指定起始关键字:

      • start_word = line.split(" ")[0]
        
    1. 使用space作为分隔符拆分行:

      • if start_word == "state":
            line = line.split(" ")
        

现在对于行中的每个单词,我们可以在末尾添加逗号

for word in line:
    result += word + ", "

但是我们需要去掉最后两个字符,否则会以"2000,"结尾

result = result[:-2]
print(result)

结果:

state, 1983, 1987, 1988, 1993, 1994, 1999, 2000

代码:


import cv2
import pytesseract

img = cv2.imread("15f8U.png")
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
thr = cv2.adaptiveThreshold(gry, 255,
                            cv2.ADAPTIVE_THRESH_MEAN_C,
                            cv2.THRESH_BINARY, 11, 2)
txt = pytesseract.image_to_string(gry)

txt = txt.split("\n")
result = ""

for line in txt:
    start_word = line.split(" ")[0]
    if start_word == "state":
        line = line.split(" ")
        for word in line:
            result += word + ", "
        result = result[:-2]
        print(result)
        continue
    if line != '' or line != "":
        print(line)

结果:

Table 1: WAGE SAMPLE STATISTICS, by year and state (1983-2000)
 
 
Logged mean wages
in year
 
 
 
state, 1983, 1987, 1988, 1993, 1994, 1999, 2000
Andhra Pradesh 5.17 5.49 5.53 6.28 6.24 5.77 5.80
Gujarat 9 6.04 5.92 6.64 6.58 6.09 6.04
Haryana 12 6.25 6.43 6.80 6.60 6.54 6.74
Manipur 54 6.31 6.73 7.15 7.09 6.90 6.83
Orissa 5.24 5.90 5.96 6.16 6.26 5.57 5.58
Tamil Nadu 5.19 5.67 5.68 6.31 633 6.02 5.97
Uttar Pradesh 5.55 6.06 3 6.61 2 6.00 6.07
Mizoram 6.43 5.44 6.03 681 6.76 8 7