Как заполнить набросок текста PIL для использования тессеракта?
Привет, я хочу, чтобы это изображение было создано с помощью PIL и tesseract, в целом оно работает нормально, несмотря на то, что на этом рисунке номер контура, например 1148, tesseract не смог его распознать. Поэтому я хочу использовать PIL, чтобы заполнить набросок текста 1148 сплошным текстом, но я не знаю, как это сделать. Любая помощь будет оценена. Пожалуйста.
И это мой код:
api = tesseract.TessBaseAPI()
api.Init(".","eng",tesseract.OEM_DEFAULT)
api.SetVariable("tessedit_char_whitelist", "0123456789.")
api.SetPageSegMode(tesseract.PSM_AUTO
pic = ImageGrab.grab((120,90,180,650))
pic = pic.filter(ImageFilter.CONTOUR)
pic.save("321.png")
mImgFile = "321.png"
mBuffer=open(mImgFile,"rb").read()
result = tesseract.ProcessPagesBuffer(mBuffer,len(mBuffer),api)
print result
1 ответ
Решение
Вы можете попробовать экспериментальный floodfill()
функция в ImageDraw
,
Если вы можете выяснить некоторые точки внутри цифр, используйте что-то вроде этого:
from PIL import ImageColor, ImageDraw
draw = ImageDraw.Draw(pic)
point_inside_digit = (some_x, some_y)
ImageDraw.floodfill(im, point_inside_digit, ImageColor.getrgb("black"))
del draw
В дополнение к белому есть несколько синих и желтых цифр, поэтому лучше заполнить их черной рамкой:
ImageDraw.floodfill(
im, point_inside_digit, ImageColor.getrgb("black"),
border=ImageColor.getrgb("black"))