Cómo extraer un nombre humano de una cadena en Python.
Tengo una cadena fuera de una imagen OCR y necesito encontrar una forma de extraer nombres de personas de ella. Aquí está la imagen requerida para OCR, que se muestra así:
From: Al Amri, Salim <salim.amri@gmail.com>
<p>Sent: 25 August 2021 17:20</p>
<p>To: Al Harthi, Mohammed <mohd4.king@rihal.om></p>
<p>Ce: Al hajri, Malik <hajri990@ocaa.co.om>; Omar, Naif <nnnn49@apple.com></p>
<p>Subject: Conference Rooms Booking Details</p>
<p>Dear Mohammed,</p>
<p>As per our last discussion these are the available conference rooms available for booking along
with their rates for full day:</p>
<p>Room: Luban, available on 26/09/2021. Rate: $4540</p>
<p>Room: Mazoon, available on 04/12/2021 and 13/02/2022. Rate: $3000
Room: Dhofar. Available on 11/11/2021. Rate: $2500</p>
<p>Room: Nizwa. Available on 13/12/2022. Rate: $1200</p>
<p>Please let me know which ones you are interested so we go through more details.
Best regards,</p>
<p>Salim Al Amri
<code>
There are 4 names in total in the heading, and i am required to get the output:
</code>
names = 'Al Hajri, Malik', 'Omar, Naif', 'Al Amri, Salim', 'Al Harthy, Mohammed' #desired output
<code>
but I have no idea how to extract the names. I have tried RegEx and came up with:
</code>
names = re.findall(r'(?i)([A-Z][a-z]+[A-Z][a-z][, ] [A-Z][a-z]+)', string) #regex to find names
<code>
which searches for a Capital letter, then a comma, then another word starting with a capital letter. it is close to the desired result but it comes out as:
</code>
names = ['Amri, Salim', 'Harthi, Mohammed', 'hajri, Malik', 'Omar, Naif', 'Luban, available', 'Mazoon, available'] #acutal result
Se me ocurrió tal vez usar otra cadena que extraiga los nombres de las salas y los excluya de la lista, pero no tengo idea de cómo implementar esa idea. Soy nuevo en el uso de expresiones regulares, así que agradeceré cualquier ayuda. Gracias de antemano.
davy.ai
Para extraer los nombres deseados del texto del OCR, podemos seguir el enfoque de identificar primero las direcciones de correo electrónico y luego extraer los nombres asociados con esas direcciones de correo electrónico. Una forma de lograr esto puede ser:
Aquí hay una implementación del enfoque anterior en Python:
Podemos probar esta función en el texto del OCR proporcionado:
Como podemos ver, esta implementación extrae correctamente los cuatro nombres del texto del OCR. Hay que tener en cuenta que las direcciones de correo electrónico no se devuelven como parte de la salida.