我正在努力使用Tesseract OCR。 我有一个血液检查图像,它有一个带有压痕的表格。虽然tesseract可以很好地识别字符,但它的结构不会保留在最终输出中。例如,查看缩进的“Emocromo con formula”(英文翻译:带公式的血液计数)下面的行。我想保留这个缩进
我阅读了其他相关的讨论,发现了选项preserve_interword_spaces=1
。结果稍微好了一点,但正如你所看到的,它并不完美
有什么建议吗
更新:
我尝试了Tesseract v5.0,结果是一样的
代码:
Tesseract版本为4.0.0.20190314
from PIL import Image
import pytesseract
# Preserve interword spaces is set to 1, oem = 1 is LSTM,
# PSM = 1 is Automatic page segmentation with OSD - Orientation and script detection
custom_config = r'-c preserve_interword_spaces=1 --oem 1 --psm 1 -l eng+ita'
# default_config = r'-c -l eng+ita'
extracted_text = pytesseract.image_to_string(Image.open('referto-1.jpg'), config=custom_config)
print(extracted_text)
# saving to a txt file
with open("referto.txt", "w") as text_file:
text_file.write(extracted_text)
比较结果:
GITHUB:
如果您想亲自尝试,我已经创建了一个GitHub存储库
谢谢你的帮助和时间
image_to_data()
函数提供了更多信息。对于每个单词,它将返回其边框。你可以用这个Tesseract
自动将图像分割为块。然后,您可以按块的垂直位置对其进行排序,并可以找到每个块的平均字符宽度(这取决于块的可识别字体)。然后,对于块中的每个单词,检查它是否接近上一个单词,如果不接近,则相应地添加空格。我正在使用pandas
来简化计算,但它的使用不是必需的。不要忘记,结果应该使用单间距字体显示此代码将产生以下输出:
相关问题 更多 >
编程相关推荐