I am trying having trouble running any data sets through WebODM. No matter how many pictures I upload, I keep getting the error: “UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xb1 in position 0: ordinal not in range(128)”

Google indicates its some issue with how python 2.7 handles UTF-8 strings, so I tried to update everything using python 3.x, which allegedly resolved all of those issues. I am running Ubuntu 16.04 LTS.

[INFO] Initializing OpenDroneMap app - Sat Dec 23 02:13:07 2017
[INFO] Running ODM Load Dataset Cell
[DEBUG] Loading dataset from: /var/www/data/3ae91cb5-5528-4ccb-9512-d7367d5221f5/images
[DEBUG] /var/www/data/3ae91cb5-5528-4ccb-9512-d7367d5221f5/images
Traceback (most recent call last):
File “/code/run.py”, line 47, in
File “/code/scripts/dataset.py”, line 72, in process
photos += [make_odm_photo(self.params.force_focal, self.params.force_ccd, files)]
File “/code/scripts/dataset.py”, line 17, in make_odm_photo
File “/code/opendm/types.py”, line 35, in init
self.parse_pyexiv2_values(self.path_file, force_focal, force_ccd)
File “/code/opendm/types.py”, line 110, in parse_pyexiv2_values
key = [x for x in ccd_widths.keys() if self.make_model in x]
UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xb1 in position 0: ordinal not in range(128)

Hi, are you running WebODM using docker? Also, could you share the images you are using? Perhaps this is a bug in OpenDroneMap.

I was running webODM using docker and natively… same error.

@pierotofy, I was actually able to process other images… so it looks like it was images created by a Mi Drone. I wonder if these are UTF-8 characters in the EXIF data or something that webodm is choking on.

Images are here:

Your analysis is correct, the “Make” field in the EXIF headers contains UTF-16 characters, which trip the parsing code:

Make                            : �������׿Ƽ����޹�˾

I’ve opened a bug here Cannot process exif headers with UTF-16 encoding · Issue #732 · OpenDroneMap/ODM · GitHub

Current workaround would be to manually remove the “Make” exif field before processing.