Image_to_string не читает текст из TIFF или TIF-файлов с помощью Pytesseract - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь прочитать текст из файлов изображений TIF или TIFF.Эти файлы имеют несколько страниц.

Когда я печатаю массив, я получаю только значение true, а затем нет текста.Однако, когда я использую файлы .png, я могу напечатать текст.

Ниже приведен мой код.

from PIL import Image, ImageSequence
import pytesseract
from pytesseract import image_to_string
import numpy as np
import cv2
test = Image.open(r'C:\Python\BG36820V1.tiff')
#test1 = Image.open(r'C:\Users\Documents\declaration.png')
testarray = np.array(test)
print(testarray)
print(pytesseract.image_to_string(Image.fromarray(testarray))

Это выход для тестового файла:

[[ True  True  True ...  True  True  True]
 [ True  True  True ...  True  True  True]
 [ True  True  True ...  True  True  True]
 ...
 [ True  True  True ...  True  True  True]
 [ True  True  True ...  True  True  True]
 [ True  True  True ...  True  True  True]]

Однако это хорошо работает с test1.

[[[242 242 242 255]
  [242 242 242 255]
  [242 242 242 255]
  ...
  [242 242 242 255]
  [242 242 242 255]
  [242 242 242 255]]

 [[182 180 182 255]
  [182 180 182 255]
  [182 180 182 255]
  ...
  [182 180 182 255]
  [182 180 182 255]
  [182 180 182 255]]
g Request 4042337300021 submitted sucessfully

x
TYPE

Я попытался OpenCV для чтения файлов TIFF, я получаю формат не поддерживается.

Как мне распечатать текст изTIFF или TIFF файлы.

Есть предложения?

С уважением, Ren.

1 Ответ

0 голосов
/ 21 сентября 2018

Модифицировал весь мой код и преобразовал файлы tiff в файл jpeg, и он смог прочитать текст.

from PIL import Image, ImageSequence
import pytesseract
from pytesseract import image_to_string
import numpy as np
import cv2
import os
yourpath = r'C:\Python\'
for root, dirs, files in os.walk(yourpath, topdown=False):
    for name in files:
        print(os.path.join(root, name))
        if os.path.splitext(os.path.join(root, name))[1].lower() == ".tiff":
            if os.path.isfile(os.path.splitext(os.path.join(root, name))[0] + ".jpg"):
                print ("A jpeg file already exists for %s" % name)
            # If a jpeg is *NOT* present, create one from the tiff.
            else:
                outfile = os.path.splitext(os.path.join(root, name))[0] + ".jpg"
                try:
                    im = Image.open(os.path.join(root, name))
                    print ("Generating jpeg for %s" % name)
                    im.thumbnail(im.size)
                    im.save(outfile, "JPEG", quality=100)
                except Exception as e:
                    print (e)

test = Image.open(r'C:\Python\BG96254V1.jpeg')

testarray = np.array(test)
print(testarray)
print(pytesseract.image_to_string(Image.fromarray(testarray)))

Это только чтение 1-й страницы, а не списка страниц.Любые предложения, как сделать это изменение, чтобы прочитать все страницы.

Спасибо.

...