[00:00.000 --> 00:23.680] Okay, the next speaker is Michele Tameni, which has a talk about [00:23.680 --> 00:34.280] Ko-fi or Ko-fi Osm. Improved opposite map are received at a time. So check in an art shop on [00:34.280 --> 00:44.320] the map with the receipt. So the stage use. Hello everyone and thank you to be here. It's really [00:44.320 --> 00:49.560] nice to be here like after attending like 10 edition of FOSM. So it's my first talk. It's [00:49.560 --> 00:56.120] really great to be here. So I want to talk to you today about a little project I started like [00:56.120 --> 01:04.360] five months ago, I think. And it basically want to be a new different and hopefully easier way [01:04.360 --> 01:13.400] to add place in particularly business place to open straight map. And to give you a little bit [01:13.400 --> 01:21.960] of perspective. The usual process to insert a new place or a business into open street map usually [01:21.960 --> 01:27.920] involved with the check if the place is already on open street maps, open them up and look for the [01:27.920 --> 01:34.320] location or where you want to add the place. Gather all the information needed. So the name, [01:34.320 --> 01:42.440] the position, the address, maybe the phone number, the website. And then open your preferred editor, [01:42.440 --> 01:50.960] the website or you know, Osmond or something like that. Insert all the information, check if it's [01:50.960 --> 02:00.360] correct and then save it. And it became easier over the time but it's anyway time consuming task. [02:00.360 --> 02:07.840] And especially I found myself sometimes having problem found updated information about your [02:07.840 --> 02:15.280] business like the phone number or the website. Sometimes you find incorrect information online. [02:15.280 --> 02:26.600] So I think it's quite hard sometimes to insert a new place. And so I got this idea that I'll tell [02:26.600 --> 02:34.040] you later how it's come. But to validate the idea, before coming to FOSM we took a little bit [02:34.040 --> 02:40.720] longer way. We went to Zagreb with one of my friends to drink some beer for a serious purpose [02:40.720 --> 02:51.360] obviously. And when you are in a new city that you don't know, you usually open them up and have [02:51.360 --> 03:02.160] a look where the majority of pubs, restaurants or something like that, where they are. And when [03:02.160 --> 03:08.840] you see something like that, you know that on that street maybe it's a good place to be or on the [03:08.840 --> 03:14.400] other side of the city there is something else. But what you usually do is looking for restaurants, [03:14.400 --> 03:20.280] pubs, bars and etc. So it's quite important for me having this kind of information on the map. [03:20.280 --> 03:29.440] Open street map I think it's improved a lot over the last years, especially Europe maybe. But [03:29.440 --> 03:39.360] sometimes it's lacking this information I think. So we went to Zagreb, we tried to find as many [03:39.360 --> 03:47.680] bars as possible for this research. And what we found out is that there is so much more pubs and [03:47.680 --> 03:55.320] drink in place than what we spot in the map at first time. So our question is how we can improve [03:55.320 --> 04:02.880] this. Obviously we can do more travel like this one and then insert all the information that we [04:02.880 --> 04:10.240] gather traveling. Fortunately there is so many volunteers around the world that do this kind [04:10.240 --> 04:18.840] of stuff and insert all the kind of place that we nowadays we can found on open street map. But as [04:18.840 --> 04:24.920] I told you before it's a time-consuming task and you have always to find the correct information [04:24.920 --> 04:34.320] about the business you want to add. So what you can do, you can do the things that I already said [04:34.320 --> 04:44.200] or do something like Bob does that is seated over there. I think he do a quite smart thing. He [04:44.200 --> 04:55.160] collect all this hype that we get over our drinking nights. And after he check if the place where we [04:55.160 --> 05:01.640] went is already on the map or not. And if it's not it's inserted in open street map. With all the [05:01.640 --> 05:07.720] information already there you don't need to look everywhere because usually the receipt have the [05:07.720 --> 05:14.040] business name, the address, the location, the numbers, sometimes the website. So I think it's [05:14.040 --> 05:20.760] quite smart things to do something like this. Maybe it's not that smart that Bob usually do this [05:20.760 --> 05:29.400] after too many years. That's another problem. And to avoid his mistakes, like type or something [05:29.400 --> 05:35.520] like that, I think it could be interesting to try to automate the process and access the information [05:35.520 --> 05:43.560] from the receipt. And basically the idea, so it's like to use a picture of your receipt and you get [05:43.560 --> 05:48.520] all the information that you need to insert the place and eventually you insert the place already [05:48.520 --> 05:55.440] if the place is not on the open street map. So copy or send, basically do these things, [05:55.440 --> 06:02.520] extract the text from the receipt, try to tokenize and label the data that you can find, [06:02.520 --> 06:10.800] check if the existing of the place is the place is already on the open street map. And if not, [06:10.800 --> 06:20.240] maybe because it's not actually possible, you can insert it already on the open street map or at [06:20.240 --> 06:27.840] least copy and paste all the information you need. And actually the project is quite small, [06:27.840 --> 06:35.000] it's just a proof of concept. And I thought a little bit about the architecture of this [06:35.000 --> 06:42.920] project and maybe I started to try to do a standalone app. But I think that maybe it's [06:42.920 --> 06:49.200] better to have something that can be easily integrated in the other application. There is [06:49.200 --> 06:55.600] like something like street complete or other projects that do a great job to improve and [06:55.600 --> 07:00.880] make easy to people to contribute to open street map. So I think it can be really, [07:00.880 --> 07:07.160] really interesting to maybe integrate a function like this in those apps. So I just [07:07.160 --> 07:15.480] mocked up a small Python API, visit on fast API that expose an endpoint where you can just [07:15.480 --> 07:23.960] upload an image. And then the software tried to understand what is on the site, label all the [07:23.960 --> 07:29.760] data and just return it. Actually, the front end is just really, really small application that [07:29.760 --> 07:41.000] show a small form and visualize the information that the mechanic will extract. As I said, [07:41.000 --> 07:47.440] future integration for the editors, I think it will be the way to use this kind of function, [07:47.440 --> 07:53.880] if it's probably to be interesting and useful and available. Or maybe it can be just a standalone [07:53.880 --> 08:03.520] app or a PWA. I actually don't know. It's something open and I'm here to discuss it actually. So [08:03.520 --> 08:11.720] how it works actually. The receivers are loaded to a server. I remove the exit data just to have [08:11.720 --> 08:18.760] a little bit of privacy because it can be there like the location, the time where you went in a [08:18.760 --> 08:24.800] place, and I think it's not something that you want to share. The image is a little bit [08:24.800 --> 08:31.680] preprocessed for before the OCR. Actually, it's something really basic that I think it can be [08:31.680 --> 08:43.240] improved really a lot. And there is OCR with Tesla OCR that work quite good, but I think it can be a [08:43.240 --> 08:50.920] little bit better, maybe processing a little bit more on image before. Then I tried several way [08:50.920 --> 08:57.640] to parse the data with Leapostal that actually I think is what I found the most reliable for this [08:57.640 --> 09:05.560] task with SPACI. And maybe it could be interesting to train a custom model because I found some [09:05.560 --> 09:16.080] open source model that can understand what our receiver and invoice say, but it's usually trained [09:16.080 --> 09:23.760] about the product that you buy and find the price and the total and not the business name. So it [09:23.760 --> 09:32.240] doesn't work really well actually. Then we can just look with an omination with the place it's [09:32.240 --> 09:39.560] already on the OpenStatePAP or not. If we can find the exact name, I try a location search with [09:39.560 --> 09:47.600] the Overpass API so I look at the address, have a look at all the business of that type. There is [09:47.600 --> 09:53.720] around and show a list to the user to just make sure that the place is not there with a little [09:53.720 --> 10:03.640] bit different name. So what can be done different or better I have in my to the list. Improved [10:03.640 --> 10:10.280] the data section. As I said before, the OCR actually works good. I tried like the Google [10:10.280 --> 10:15.720] Vision API that works much better, but I don't want to use it actually. So I think that maybe [10:15.720 --> 10:22.320] with a little bit more preprocessing on image, all the data excited could be a little bit more [10:22.320 --> 10:30.640] accurate. As I said the front end, actually it's a really, really small application that just shows [10:30.640 --> 10:36.520] some information. It's maybe better to do on the client side all the stuff for privacy reasons. So [10:36.520 --> 10:43.640] I just can read the text, keep it on my device and just upload or save the new place to OpenState [10:43.640 --> 10:51.160] PAP choosing what information I want to share. Integration. So as I said, you set the place [10:51.160 --> 11:00.800] directly from the app will be great or integrated it with some other editor. More safe to test and [11:00.800 --> 11:08.560] improve because what we spot in the agreb, so our chip is not unusual actually, is that there is [11:08.560 --> 11:16.120] not clear standard of obviously for a shift and can change a little bit from place to place. In [11:16.120 --> 11:25.600] Italy almost they are all the same. We doesn't find this true for like a diagram. So maybe call it [11:25.600 --> 11:33.120] more information about how the chip looks all around the world could be great. What we can do, [11:33.120 --> 11:42.320] be done different because this is the step that I thought it's the easiest, but maybe like I said, [11:42.320 --> 11:50.960] having a custom model that can label a little bit better, the information could be interesting at [11:50.960 --> 11:55.880] least because sometimes you find not the name of the place on the receipt, but the name of the [11:55.880 --> 12:01.680] business that is sometimes different or sometimes you find both. And actually the postal that I [12:01.680 --> 12:10.120] use they get confused so you doesn't have a reasonable result over time. So why I don't [12:10.120 --> 12:17.040] want is to find more pubs, more beer, more fun, help Bob to drink some more good beer, [12:17.040 --> 12:28.320] and absolutely to improve OpenStreetMaps together and just having an easier way to add place and so [12:28.320 --> 12:35.160] we can call it more information. So thank you, this is the website where you can find the [12:35.160 --> 12:40.400] source code. I asked the temporary playground where you can upload your receipt to test and [12:40.400 --> 12:47.960] that's it. I just want to know if you find this idea interesting, if it could be good to go on [12:47.960 --> 12:55.520] with this project, if you have some suggestions. So I ask questions, it doesn't ask you to have [12:55.520 --> 13:08.240] questions. So thank you. [13:08.240 --> 13:32.160] Because maybe you haven't snapped the photo when you just went out from the place, the first [13:32.160 --> 13:38.520] reason, and the second reason is for privacy, as I said before, but I think it will be great to [13:38.520 --> 13:44.160] offer the users the possible to choose if you want to share information. It's much easier [13:44.160 --> 13:51.360] because if you have the exit coordinates, you can just have a look in a really small area around [13:51.360 --> 13:57.880] and just easily found if the place is already on OpenStreetMap or not and even be more accurate [13:57.880 --> 14:05.320] when you insert it. So it's obviously a nice idea. I haven't done it just because sometimes like Bob [14:05.320 --> 14:26.680] he doesn't do the insert right away, but the day after then go there. Okay, I repeat the question. [14:35.320 --> 14:39.400] That's a nice idea. Yes.