You can register as many services and service providers as you like. When you retrieve all MIMERecognizerServices using the
lookup_all function, one of the results in the list will be a PDFRecognizer() instance.

In order for the service discovery process to find the PDFRecognizer, you need to place it in a services folder. Your
directory structure might look something like this (__init__.py’s removed for demo purposes):

This will get all concrete implementations of the MIMERecognizerService but the we do not need to know about the
existence of any of these concrete implementations. Adding extra functionality is as simple as dropping a file inside a
services directory, no additional code is necessary. This makes adding new service providers in a loosely coupled way very easy .