- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 tesseract-ocr 4.0 从图像中提取表格文本,并将结果导出到 Excel 中,同时保持数据对齐。
我想在提取的表格中保留图像中的所有空格。但是 OCR 会跳过很多前导和尾随空格并将其删除。
我有一些图像,其中某些地方的空白区域出现在表格中。我在 tesseract 中使用了 preserve whitespaces 选项,但 OCR 仍然会跳过很多空格。
在使用 OCR 提取时,有没有办法检测或保留表格中的所有空白区域?或者是否有任何技术可以使用表格中的距离测量来检测空白区域?
附上相同的图像:
最佳答案
我认为您应该将 tesseract 升级到版本 5 并使用“-c preserve_interword_spaces=1”来保留空格。但也许您必须进行后期处理,因为输出可能不符合您的预期。
已编辑
您的问题类似于 this 。但是由于不能直接使用,所以我对它进行了少量的修改。归功于 igrinis。
import cv2
import pytesseract
from pytesseract import Output
import pandas as pd
img = cv2.imread("bsShN.jpg", cv2.COLOR_BGR2GRAY)
gauss = cv2.GaussianBlur(img, (3, 3), 0)
custom_config = r' -l eng --oem 1 --psm 6 -c preserve_interword_spaces=1 -c tessedit_char_whitelist="0123456789- " '
d = pytesseract.image_to_data(gauss, config=custom_config, output_type=Output.DICT)
df = pd.DataFrame(d)
# clean up blanks
df1 = df[(df.conf != '-1') & (df.text != ' ') & (df.text != '')]
# sort blocks vertically
sorted_blocks = df1.groupby('block_num').first().sort_values('top').index.tolist()
for block in sorted_blocks:
curr = df1[df1['block_num'] == block]
sel = curr[curr.text.str.len() > 3]
char_w = (sel.width / sel.text.str.len()).mean()
prev_par, prev_line, prev_left = 0, 0, 0
text = ''
for ix, ln in curr.iterrows():
# add new line when necessary
if prev_par != ln['par_num']:
text += '\n'
prev_par = ln['par_num']
prev_line = ln['line_num']
prev_left = 0
elif prev_line != ln['line_num']:
text += '\n'
prev_line = ln['line_num']
prev_left = 0
added = 0 # num of spaces that should be added
if ln['left'] / char_w > prev_left + 1:
added = int((ln['left']) / char_w) - prev_left
text += ' ' * added
text += ln['text'] + ' '
prev_left += len(ln['text']) + added + 1
text += '\n'
print(text)
这是输出。并非所有数字都能正确识别。有些地方还必须固定空格。
56 0 232 35 197 19363
0 3 22 10 12 1586
60 200 165 0 165 11626
44 345 69 50 610 75 54 7593
52 789 191 480 96 618 149 6324
84 71 34 50 8610 20 74 4837
77 680- 131 61 1 71 3000
11 6 103 0 103 9932
2 52 29 3 26 4451
12 65 23 4 19 1626
24 62 100 10 -1 90 6621
497 897 63 360 292 100 0 31 3056
863 1285 331 50 197 50 0 134 17037
0 5 24 2 22 3159
15 131 144 47 97 15070
44 61 86 44 4 112 22 1320
10 90 85 50 135 0 0
3 8 54 11 -9 43 2334
关于python - 使用 tesseract-4.0 进行文本提取时如何保留图像中的所有空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61250577/
我正在尝试使用 tesseract 来识别图像中的字符。这个图像是通过从另一个图像中抓取字符并将它们放在新图像中的一行来创建的。问题是,当我将这张图片提供给 tesseract 时,它在输出中没有显示
使用创建聚类数据时 mftraining -F font_properties -U unicharset -O lan.unicharset *.tr 我收到以下消息 C:\Users\ \AppD
我是 tesseract 的新手,对 github 页面中的不同目录有点困惑。 tesserac-ocr 代码库是我安装的。在/usr/local/share/tessdata/中安装了一个 tess
我找不到详细的文档,也没有浏览源代码的感觉。例如,如果 Tesseract 引擎已经完成,我不想重做精明的边缘检测。 最佳答案 本文档提供了引擎的概述:https://github.com/tesse
我对 Tesseract OCR 完全陌生。这个问题可能很简单,但我似乎无法使用 Google 找到答案。 基本上,我有一个包含两部分的图像:第一部分位于图像的顶部,黑色背景和白色文本;第二部分位于图
我浏览了整个 Google 代码网站,但没有找到任何从 API 角度解释如何使用 Tesseract 的内容。有人知道在哪里可以找到这个吗? 最佳答案 最新文档现已发布 here 和 here 。 关
我可以通过命令行使用 tesseract 4.0 获得单词级别的置信度分数。有兴趣知道是否也有办法让角色自信。 对于单词级别的置信度,使用以下命令: tesseract [Image name] ou
TL;DR It appears that tesseract cannot recognize images consisting of a single digit. Is there a wor
所以我已经研究这个问题一段时间了,虽然其他人也有类似的问题,但对我来说没有任何作用: 我正在尝试将 pytesseract 用于项目,并将其安装在 User/Environments/testEnv/
我正在考虑使用 Tesseract 来处理 PDF 文件,因此我想使用该库而不是外部可执行文件。 我首先下载完整的 Tesseract 源代码并考虑构建它。遗憾的是,标准源没有任何方法可以在非 Lin
是否可以使用 Tesseract-OCR 获取已识别字符的字体,即它们是 Arial 还是 Times New Roman,无论是从命令行还是使用 API。 我正在扫描可能具有不同字体的不同部分的文档
我试图让 Tesseract(使用 Tess4J 包装器)仅匹配特定模式。该模式是连续四位数字,我认为是\d\d\d\d。这是我正在提供 tesseract 的图像的一个非常小子集(平面图受到限制
我不是 100% 确定 Java api 包 Tess4J 中 Tesseract 和 Tesseract1 对象的区别,任何人都可以解释一下吗? 我知道 Tesseract 使用接口(interfa
我正在测试 Hololens 中的一些功能。想知道是否可以在 Hololens 中使用任何对象检测/文本识别功能? 最佳答案 Hololens 1 本身不支持对象检测,您需要使用第三方代码。 Open
我正在尝试为 Tesseract 4.0 创建训练数据来识别屏幕截图中的图标(例如,评论,分享,保存)。这是示例屏幕截图: 我想微调 Tesseract 以实现如下输出: 喜欢147 评论 29 已保
我想知道Tesseract OCR使用的配置文件接受哪些参数,如何编写配置文件等 我在 their site 上找不到任何有关此内容的文档。如何确定支持哪些参数及其含义? 最佳答案 Tesseract
我正在尝试为 Tesseract 4.0 创建训练数据来识别屏幕截图中的图标(例如,评论,分享,保存)。这是示例屏幕截图: 我想微调 Tesseract 以实现如下输出: 喜欢147 评论 29 已保
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 此帖于11个月前编辑提交审核,
我正在尝试设置 tessedit_write_images但似乎做不到,我在任何地方都看不到 tessinput.tif 我正在做: import tesseract api = tesseract.
使用tesseract-ocr#3.02.02。 tesseract的基本用法是 tesseract sourc.png result 生成 和result.txt。要获取结果文本,我必须 cat 这
我是一名优秀的程序员,十分优秀!