这是原始屏幕截图,我将图像裁剪成4个部分,并将图像的背景清除到我可以做的范围,但tesseract只检测到最后一列而忽略了其余部分.
显示tesseract的输出,因为在处理结果时我删除了空格
Femme—Fatale.
DaRkLoRdEIa
aChineseN1gg4
Noob_Diablo_
Run Code Online (Sandbox Code Playgroud)
显示tesseract的输出,因为在处理结果时我删除了空格
Kicked.
NosNoel
ChikiZD
Death_Eag|e_42
Chai—.
Run Code Online (Sandbox Code Playgroud)
3579 10 1 7 148
2962 3 O 7 101
2214 2 2 7 99
2205 1 3 6 78
Run Code Online (Sandbox Code Playgroud)
8212
7198
6307
5640
4884
15
40
40
6O
80
80
Run Code Online (Sandbox Code Playgroud)
我只是倾销输出
result = `pytesseract.image_to_string(Image.open("D:/newapproach/B&W"+str(i)+".jpg"),lang="New_Language")`
Run Code Online (Sandbox Code Playgroud)
但是我不知道如何从这里开始获得一致的结果.无论如何,我可以强制tesseract识别文本区域并使其扫描.因为在培训师(SunnyPage)中,tesseract默认识别扫描它无法识别某些区域,但一旦我选择手动,一切都被检测到并正确翻译成文本
我正在尝试使用 OpenCV 和 pytesseract 解决一些简单的验证码。一些验证码样本是:
我试图用一些过滤器去除嘈杂的点:
import cv2
import numpy as np
import pytesseract
img = cv2.imread(image_path)
_, img = cv2.threshold(img, 127, 255, cv2.THRESH_BINARY)
img = cv2.morphologyEx(img, cv2.MORPH_OPEN, np.ones((4, 4), np.uint8), iterations=1)
img = cv2.medianBlur(img, 3)
img = cv2.medianBlur(img, 3)
img = cv2.medianBlur(img, 3)
img = cv2.medianBlur(img, 3)
img = cv2.GaussianBlur(img, (5, 5), 0)
cv2.imwrite('res.png', img)
print(pytesseract.image_to_string('res.png'))
Run Code Online (Sandbox Code Playgroud)
结果转换后的图像是:
不幸的是,pytesseract 只能正确识别第一个验证码。还有其他更好的改造吗?
最终更新:
正如@Neil 所建议的那样,我尝试通过检测连接的像素来消除噪声。为了找到连接的像素,我找到了一个名为 的函数connectedComponentsWithStats,它检测连接的像素并为组(组件)分配一个标签。通过查找连接组件并删除具有少量像素的组件,我设法使用 pytesseract 获得了更好的整体检测精度。
这是新的结果图像:
我正在尝试从 PDF 中提取印地语文本。我尝试了所有从 PDF 中提取的方法,但都没有奏效。有解释为什么它不起作用,但没有这样的答案。因此,我决定将PDF转换为图像,然后用于pytesseract提取文本。我已经下载了印地语训练的数据,但是这也提供了非常不准确的文本。
这是 PDF 中的实际印地语文本(下载链接):
到目前为止,这是我的代码:
import fitz
filepath = "D:\\BADI KA BANS-Ward No-002.pdf"
doc = fitz.open(filepath)
page = doc.loadPage(3) # number of page
pix = page.getPixmap()
output = "outfile.png"
pix.writePNG(output)
from PIL import Image
import pytesseract
# Include tesseract executable in your path
pytesseract.pytesseract.tesseract_cmd = r"C:\Program Files\Tesseract-OCR\tesseract.exe"
# Create an image object of PIL library
image = Image.open('outfile.png')
# pass image into pytesseract module
# pytesseract is trained in many languages
image_to_text …Run Code Online (Sandbox Code Playgroud) 我正在使用 pytesseract v5.0,并使用 OpenCV 旋转图像,然后将其传递给 pytesseract.image_to_osd()。有一些图像可以与 image_to_osd 一起使用,但其他图像则不能,并且程序会给出以下错误: TesseractError: (1, 'Tesseract Open Source OCR Engine v5.0.0-alpha.20201127 with Leptonica警告:无效分辨率 0 dpi .使用 70 代替。估计分辨率为 179 警告。无效分辨率 0 dpi。使用 70 代替。字符太少。跳过此页处理过程中出错。')我正在使用 python 3.9.5。
请分享解决方案/示例代码来解决此问题。
我是tesseract OCR的新手.我试图将图像转换为tif并运行它以查看在Windows中使用cmd从tesseract输出的内容,但我不能.你能帮助我吗?什么命令可以使用?
这是我的示例图片:

我正在尝试使用 Tesseract 从图像中获取文本字符的坐标或位置。我想知道确切的像素位置,以便我可以使用其他工具单击该文本。
编辑 :
import pytesseract
from pytesseract import pytesseract
import PIL
from PIL import Image
import cv2
import csv
img = 'E:\\OCR-DATA\\sample.jpg'
imge = Image.open(img)
data=pytesseract.image_to_string(imge,lang='eng',boxes=True,config='hocr')
print(data)
Run Code Online (Sandbox Code Playgroud)
data包含具有框边界值的识别文本。但我不确定,如何使用该边界值来获取文本的坐标。
data变量的值如下:
O 100 356 115 373 0
u 117 356 127 368 0
t 130 356 138 372 0
p 141 351 152 368 0
u 154 356 164 368 0
t 167 356 175 371 0
Run Code Online (Sandbox Code Playgroud) 我正在使用 tesseract(通过 python 包装器)来从文档中提取文本。这些文档不包含任何图像或表格,仅包含文本。
是否有任何选项可以将标题/标题与文本区分开来?理想情况下,我希望能够拥有类似于 xml 树的东西,而不是完整的字符串链(我不需要查看文档布局)。
我找到了一些似乎能够提供帮助的第三方工具,但我想知道是否可以直接从 tesseract 中完成。
问题
我试图用 OpenCV 捕获我的桌面并让 Tesseract OCR 查找文本并将其设置为变量,例如,如果我要玩游戏并且捕获帧超过资源量,我希望它打印并使用它。一个完美的例子是Micheal Reeves 的视频 ,每当他在游戏中失去健康时,它就会显示它并将其发送到他的蓝牙气枪来射击他。到目前为止,我有这个:
# imports
from PIL import ImageGrab
from PIL import Image
import numpy as np
import pytesseract
import argparse
import cv2
import os
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter("output.avi", fourcc, 5.0, (1366, 768))
while(True):
x = 760
y = 968
ox = 50
oy = 22
# screen capture
img = ImageGrab.grab(bbox=(x, y, x + ox, y + oy))
img_np = np.array(img)
frame = cv2.cvtColor(img_np, cv2.COLOR_BGR2RGB)
cv2.imshow("Screen", frame)
out.write(frame)
if …Run Code Online (Sandbox Code Playgroud) 尝试将简单的测试图像打印到文本时,我收到以下错误.
我已经确认我有Pillow(PIL 1.1.7)并尝试卸载并重新安装pytesseract.文件路径是正确的,因为如果我更改它们,我会收到另一个错误,指出无法找到该文件.
我的代码:
from PIL import Image
import pytesseract
pytesseract.pytesseract.tesseract_cmd= r'C:\Users\bbrown2\AppData\Local\
Programs\Python\Python37\Scripts\pytesseract'
img = r'C:\Users\bbrown2\Desktop\test.png'
print(pytesseract.image_to_string(Image.open(img)))
Run Code Online (Sandbox Code Playgroud)
我希望它打印出图像中的单词,但我总是这样:
Traceback (most recent call last):
File
"c:\Users\bbrown2\Desktop\PythonMaterials\python_test_tesseract.py", line
14, in <module>
print(pytesseract.image_to_string(Image.open(image)))
File "C:\Users\bbrown2\AppData\Local\Programs\Python\Python37\lib\site-
packages\pytesseract\pytesseract.py", line 309, in image_to_string
}[output_type]()
File "C:\Users\bbrown2\AppData\Local\Programs\Python\Python37\lib\site-
packages\pytesseract\pytesseract.py", line 308, in <lambda>
Output.STRING: lambda: run_and_get_output(*args),
File "C:\Users\bbrown2\AppData\Local\Programs\Python\Python37\lib\site-
packages\pytesseract\pytesseract.py", line 218, in run_and_get_output
run_tesseract(**kwargs)
File "C:\Users\bbrown2\AppData\Local\Programs\Python\Python37\lib\site-
packages\pytesseract\pytesseract.py", line 194, in run_tesseract
raise TesseractError(status_code, get_errors(error_string))
pytesseract.pytesseract.TesseractError: (2, 'Usage: python pytesseract.py
[-l lang] input_file')
Run Code Online (Sandbox Code Playgroud) 它是Python 3中的一个简单的光学字符识别(OCR)程序,用于获取字符串,我已经在此处上传了目标gif文件,请下载并将其另存为/tmp/target.gif。
try:
from PIL import Image
except ImportError:
import Image
import pytesseract
print(pytesseract.image_to_string(Image.open('/tmp/target.gif')))
Run Code Online (Sandbox Code Playgroud)
我将所有错误信息粘贴到此处,请修复它以从图像中获取字符。
/usr/lib/python3/dist-packages/PIL/Image.py:925: UserWarning: Couldn't allocate palette entry for transparency
"for transparency")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.5/dist-packages/pytesseract/pytesseract.py", line 309, in image_to_string
}[output_type]()
File "/usr/local/lib/python3.5/dist-packages/pytesseract/pytesseract.py", line 308, in <lambda>
Output.STRING: lambda: run_and_get_output(*args),
File "/usr/local/lib/python3.5/dist-packages/pytesseract/pytesseract.py", line 208, in run_and_get_output
temp_name, input_filename = save_image(image)
File "/usr/local/lib/python3.5/dist-packages/pytesseract/pytesseract.py", line 136, in save_image
image.save(input_file_name, format=img_extension, **image.info)
File "/usr/lib/python3/dist-packages/PIL/Image.py", line 1728, in save
save_handler(self, …Run Code Online (Sandbox Code Playgroud) python-tesseract ×10
ocr ×6
python ×6
tesseract ×3
opencv ×2
captcha ×1
image ×1
pytesser ×1
python-3.x ×1