读入OCR之前按升序对图像文件进行排序

时间:2019-08-08 03:21:03

标签: file sorting ocr

我想跟随循环来处理文件名,以便ocr以升序的方式读取它们,否则提取的文本将不按顺序排列,然后我必须转到原始图像并重新排列提取的块。

我的文件名为0001.jpg, 0002.jpg, 0003.jpg, 0004.jpg, 0005.jpg

现在,提取的文本按0002.jpg, 0003.jpg, 0005.jpg, 0004.jpg, 0001.jpg的顺序排列。因此我无法让OCR阅读器根据文件编号顺序进行读取。

我有以下代码,但就序列而言,它尚不可用。

    if len(a) > 2:
    for fn in os.listdir(a):
        if fn.endswith(".png") or fn.endswith(".jpg"):
            natsort.natsorted(fn)
            x = os.path.join(a, fn)
            rd = pytesseract.image_to_string(Image.open(x), lang='eng') \
                .replace('-\n', '').replace('\n', ' ').encode("ascii", 'ignore')
            tb1.insert('insert', rfi)
            tb1.insert('insert', rd)
            tb1.insert('insert', br)
            count += 1
        else:
            continue

else:
    count -= 1
    messagebox.showinfo(title="PROCEDURAL ERROR",
                        message="Set FOLDER & NEW_NOTE.")

OCR部分正常,我已经成功使用过。问题是我无法在执行OCR零件之前将排序的东西放回原处。

1 个答案:

答案 0 :(得分:0)

我想我明白了。

if len(a) > 2:
    xa = []
    for dp, dn, fn in walk(a):
        fn.sort(key=lambda g: int(g.split(".")[0]))
        for s in fn:
            xa.append(a + '/' + s)

    for x in xa:
        rd = pytesseract.image_to_string(Image.open(x), lang='eng') \
            .replace('-\n', '').replace('\n', ' ').encode("ascii", 'ignore')
        tb1.insert('insert', rfi)
        tb1.insert('insert', rd)
        tb1.insert('insert', br)
        count += 1

else:
    count -= 1
    messagebox.showinfo(title="PROCEDURAL ERROR",
                        message="Set FOLDER & NEW_NOTE.")