Problems with Weasyprint: ModuleNotFoundError

Viewed 10

I would like to display the text from an image and then have the coordinates determined for each word in the text. For this I use the following code:

from doctr.io import DocumentFile
from doctr.models import ocr_predictor
import json
import math
import PIL
from PIL import ImageDraw
import matplotlib.pyplot as plt

model = ocr_predictor (det_arch='db_resnet50', reco_arch='crnn_vgg16_bn',pretrained=True)      

bildpfad = "C:/Users/b2/Documents/Analysetext_1.png"               
bild = DocumentFile.from_images (bildpfad)
ergebnis = model (bild)
output = ergebnis.export ()

with open ("C:/Users/b2/Documents/docTR_OCR_output.json", "w") as f:
    f.write (json.dumps (output, indent=1))
f.close ()

ergebnis.show (bild)

# Geometrische Koordinaten
for object_1 in output ['pages'] [0] ["blocks"]:
    for object_2 in object_1 ["lines"]:
        for object_3 in object_2 ["words"]:
            print ("{}: {}".format (object_3 ["geometry"], object_3 ["value"]))

# Output like [x_min, x_max, y_min, y_max]

# Geographische Koordinaten
def convert_coordinates (geometry, page_dim):
    len_x = page_dim[1]
    len_y = page_dim[0]
    (x_min, y_min) = geometry[0]
    (x_max, y_max) = geometry[1]
    x_min = math.floor(x_min * len_x)
    x_max = math.ceil(x_max * len_x)
    y_min = math.floor(y_min * len_y)
    y_max = math.ceil(y_max * len_y)
    return [x_min, x_max, y_min, y_max]

def get_coordinates (output):
    page_dim = output ['pages'][0]["dimensions"]
    text_coordinates = []
    for object_1 in output ['pages'][0]["blocks"]:
        for object_2 in object_1 ["lines"]:
            for object_3 in object_2 ["words"]:
                converted_coordinates = convert_coordinates (object_3 ["geometry"], page_dim)
                print ("{}: {}".format (converted_coordinates, object_3 ["values"]))
                text_coordinates.append (converted_coordinates)
    return text_coordinates

graphical_coordinates = get_coordinates (output)
print (graphical_coordinates)

# Plot graphische Koordinaten
def draw_bounds(bild, bound):
    draw = ImageDraw.Draw(bild)
    for b in bound:
        p0, p1, p2, p3 = [b[0],b[2]], [b[1],b[2]], \
                         [b[1],b[3]], [b[0],b[3]]
        draw.line([*p0,*p1,*p2,*p3,*p0], fill='blue', width=2)
    return bild
bild = PIL.Image.open(bildpfad)
result_image = draw_bounds(bild, graphical_coordinates)
plt.figure(figsize=(15,15))
plt.imshow(result_image)

At the beginning I had the following error:

OSError: cannot load library 'gobject-2.0-0': error 0x7e.  Additionally, ctypes.util.find_library() did not manage to locate a library called 'gobject-2.0-0'

I was then able to fix this error and now the following is displayed:

ModuleNotFoundError: No module named 'weasyprint.text.ffi'; 'weasyprint.text' is not a package

The whole output is:

Traceback (most recent call last):
  File "c:/Users/b2/Documents/Übungen/Distanzberechnungen/Textdetection_Übung_3.py", line 3, in <module>
    from doctr.io import DocumentFile
  File "C:\Users\b2\anaconda3\envs\Python_3_6\lib\site-packages\doctr\__init__.py", line 1, in <module>
    from . import datasets, io, models, transforms, utils
  File "C:\Users\b2\anaconda3\envs\Python_3_6\lib\site-packages\doctr\datasets\__init__.py", line 3, in <module>
    from .generator import *
  File "C:\Users\b2\anaconda3\envs\Python_3_6\lib\site-packages\doctr\datasets\generator\__init__.py", line 4, in <module>
    from .tensorflow import *
  File "C:\Users\b2\anaconda3\envs\Python_3_6\lib\site-packages\doctr\datasets\generator\tensorflow.py", line 8, in <module>
    from .base import _CharacterGenerator, _WordGenerator
  File "C:\Users\b2\anaconda3\envs\Python_3_6\lib\site-packages\doctr\datasets\generator\base.py", line 11, in <module>
    from doctr.io.image import tensor_from_pil
  File "C:\Users\b2\anaconda3\envs\Python_3_6\lib\site-packages\doctr\io\__init__.py", line 2, in <module>
    from .html import *
  File "C:\Users\b2\anaconda3\envs\Python_3_6\lib\site-packages\doctr\io\html.py", line 8, in <module>
    from weasyprint import HTML
  File "C:\Users\b2\anaconda3\envs\Python_3_6\lib\site-packages\weasyprint\__init__.py", line 315, in <module>
    from .css import preprocess_stylesheet  # noqa isort:skip
  File "C:\Users\b2\anaconda3\envs\Python_3_6\lib\site-packages\weasyprint\css\__init__.py", line 25, in <module>
    from . import computed_values, counters, media_queries
  File "C:\Users\b2\anaconda3\envs\Python_3_6\lib\site-packages\weasyprint\css\computed_values.py", line 9, in <module>
    from ..text.ffi import ffi, pango, units_to_double
ModuleNotFoundError: No module named 'weasyprint.text.ffi'; 'weasyprint.text' is not a package

I hope you can help me to fix this error. Thank you in advance

0 Answers
Related