我想跟随循环来处理文件名,以便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零件之前将排序的东西放回原处。
答案 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.")