尝试在 python 上运行 tesseract,这是我的代码:
import cv2
import os
import numpy as np
import matplotlib.pyplot as plt
import pytesseract
import Image
# def main():
jpgCounter = 0
for root, dirs, files in os.walk('/home/manel/Desktop/fotografias etiquetas'):
for file in files:
if file.endswith('.jpg'):
jpgCounter += 1
for i in range(1, 2):
name = str(i) + ".jpg"
nameBW = str(i) + "_bw.jpg"
img = cv2.imread(name,0) #zero -> abre em grayscale
# img = cv2.equalizeHist(img)
kernel = np.array([[0,-1,0], [-1,5,-1], [0,-1,0]])
img = cv2.filter2D(img, -1, kernel)
cv2.normalize(img,img,0,255,cv2.NORM_MINMAX) …Run Code Online (Sandbox Code Playgroud) 我已经开始在 python 中使用 pytesseract。当我将它传递给单引号或双引号时
from PIL import Image
import pytesseract
import numpy as np
tesseract_config = r"""-c tessedit_char_whitelist=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ#'<>(){};:"""
tesseract_language = "eng"
text = pytesseract.image_to_string(Image.open('res/outc001.jpg'), lang=tesseract_language, config=tesseract_config)
print text
Run Code Online (Sandbox Code Playgroud)
它返回
Traceback (most recent call last):
File "main.py", line 15, in <module>
text = pytesseract.image_to_string(Image.open('res/outc001.jpg'), lang=tesseract_language, config=tesseract_config).split('\n')
File "/usr/local/lib/python2.7/dist-packages/pytesseract/pytesseract.py", line 193, in image_to_string
return run_and_get_output(image, 'txt', lang, config, nice)
File "/usr/local/lib/python2.7/dist-packages/pytesseract/pytesseract.py", line 140, in run_and_get_output
run_tesseract(**kwargs)
File "/usr/local/lib/python2.7/dist-packages/pytesseract/pytesseract.py", line 106, in run_tesseract
command += shlex.split(config)
File "/usr/lib/python2.7/shlex.py", line 279, in split
return …Run Code Online (Sandbox Code Playgroud) 我有一个函数,它接收图像列表并在将 OCR 应用于图像后在列表中生成输出。我有另一个函数,通过使用多处理来控制此函数的输入。因此,当我只有一个列表(即没有多重处理)时,列表中的每个图像花费了大约 1 秒,但是当我将必须并行处理的列表增加到 4 时,每个图像花费了惊人的 13 秒。
为了了解问题的真正所在,我尝试创建一个最小的问题示例。在这里,我有两个函数eat25,eat100它们打开一个图像name并将其提供给使用 API 的 OCR pytesseract。eat25做25次,eat100做100次。
我的目标是在eat100没有多处理和eat25多处理(有 4 个进程)的情况下运行。理论上,eat100如果我有 4 个独立的处理器(我有 2 个内核,每个内核有 2 个线程,因此 CPU(s) = 4(如果我错了,请纠正我),这应该比我少 4 倍的时间)。
但是当我看到代码在打印“Processing 0”4次后甚至没有响应时,所有的理论都被浪费了。不过,单处理器功能eat100运行良好。
我测试了一个简单的范围立方函数,它在多处理中运行良好,所以我的处理器可以肯定运行良好。这里唯一的罪魁祸首可能是:
pytesseract: 看到这个`
from pathos.multiprocessing import ProcessingPool
from time import time
from PIL import Image
import pytesseract as pt
def eat25(name):
for i in range(25):
print('Processing :'+str(i)) …Run Code Online (Sandbox Code Playgroud) 我正在使用以下代码从图像生成 PDF。
PDF=pytesseract.image_to_pdf_or_hocr(test_image,lang='dan',config='',nice=0,extension='pdf')
Run Code Online (Sandbox Code Playgroud)
并且 PDF 变量的类型显示为 BYTES。
我如何发布或生成 PDF?
我正在尝试使用 pytesseract 从图像中识别两个数字:
--psm 6过10-c tessedit_char_whitelist=0123456789'以上都不返回49数字。我得到的最接近的返回4没有9
你有关于如何让tesseract识别它的任何提示吗?
我试图从任何消费产品的广告截取的屏幕截图中检测和抓取文本。
我的代码以一定的精度工作,但无法在倾斜的文本区域周围制作边界框。
最近我尝试了Google Vision API,它在几乎所有可能的文本区域周围制作边界框,并非常准确地检测该区域中的文本。我很好奇我怎样才能达到相同或相似!
我的测试图像:
边界框后的 Google Vision API:
先感谢您:)
opencv imagemagick bounding-box python-tesseract google-vision
我正在尝试从简单的图像中提取文本。
当我使用默认引擎(oem 3)时,文本被提取(效果很差)。我想使用其他引擎(oem 2)看看输出是否可以提高。
import pytesseract
#this is the config that gives a poor output
config = '--tessdata-dir "C:/Program Files/Tesseract-OCR/tessdata" -l eng --oem 2 --psm 6'
text = pytesseract.image_to_string(crop, config=config)
Run Code Online (Sandbox Code Playgroud)
当我尝试传递更改引擎的选项时,出现错误,提示找不到语言文件:
pytesseract.pytesseract.TesseractError:(1,“错误:已请求 Tesseract(旧版)引擎,但 C:/Program Files/Tesseract-OCR/tessdata/eng.traineddata 中不存在组件!!加载语言“eng”Tesseract 失败无法加载任何语言!无法初始化 tesseract。”)
#experimental config
config = '--psm 6'
text = pytesseract.image_to_string(crop, config=config)
Run Code Online (Sandbox Code Playgroud)
如您所见,我显式传入 eng.traineddata 目录,但它找不到语言文件。
我有两个问题:
我还确保我的环境变量是正确的(因此第一个配置文件可以工作)。
谢谢
更新:我发现从 OCRed 文件创建 pdf 文件是不合理的
所以最好保持原样,不进行转换。我仍然遇到一些图像已连接而其他图像是 1 个寻呼机的问题。
data = []
listOfPages = glob.glob(r"C:/Users/name/test/*.tif")
for entry in listOfPages:
text = pytesseract.image_to_string(
Image.open(entry), lang="en"
)
data.append(text)
df0 = pd.DataFrame(data, columns =['raw_text'])
Run Code Online (Sandbox Code Playgroud)
这将创建一个 pandas df,其中每一行都是文件第一(单)页的字符串.tif。我如何连接 tif 文件(参见原始问题)以获得完整的多页字符串?
原始问题:我想将单页 .tif 文件转换my_folder为. 没有后续页面的 TIFF 也应转换为单页 PDF。最终,我想要一个通过 OCR 处理多个基于图像的 TIFF 文件创建的文本 PDF。.pdfpdf_folder
.tiff因此,我从文件名模式推断应该放在一起的文件组:
Drs_1_00109_1_ADS.tif
Drs_1_00099_1_ADS_000.tif
Drs_1_00099_1_ADS_001.tif
Drs_1_00099_1_ADS_002.tif
Drs_1_00186_1_ADS.tif
Drs_1_00192_1_ADS_000.tif
Drs_1_00192_1_ADS_001.tif
Run Code Online (Sandbox Code Playgroud)
例如,我想将Drs_1_00192_1_ADS_000.tif和
Drs_1_00192_1_ADS_001.tif(这是两张[单页]图片)转换为Drs_1_00192_1_ADS.pdf包含这两张图片文本数据的 2 页。该代码适用于单页 pdf 创建。我怎样才能使这个工作适用于文件名中的所述多页模式?
谢谢!
我已经开始使用Pytesser,它可以同时使用英语和中文,但是有没有办法同时使用两种语言?我需要制作自己的训练数据文件吗?我的代码是:
import Image
from pytesser import *
print image_to_string(Image.open("chinese_and_english.jpg"), lang="eng")
#also want to have chinese be recognized
Run Code Online (Sandbox Code Playgroud)
我需要使用pytesseract将具有多个页面的image.tif转录为文本。我有下一个代码:
> From PIL import Image
> Import pytesseract
> Pytesseract.pytesseract.tesseract_cmd = 'C: / Program Files (x86) / Tesseract-
> OCR / tesseract '
> Print (pytesseract.image_to_string (Image.open ('CAMARA.tif'), lang = "spa"))
Run Code Online (Sandbox Code Playgroud)
问题在于只能提取冷杉页面。我如何提取所有这些?
python-tesseract ×10
python ×9
tesseract ×7
ocr ×4
pytesser ×4
bounding-box ×1
filenames ×1
image ×1
imagemagick ×1
opencv ×1
pathos ×1
quotes ×1
tiff ×1
ubuntu ×1