Как точно извлечь текст сообщения электронной почты и номера блока из содержимого OCR?

Я использовал OCR Google Cloud Vision для извлечения текста строки электронной почты визитной карточки из Вот и использовал приведенное ниже регулярное выражение, чтобы попытаться извлечь, но без особых хороших результатов. Есть ли лучшие предложения по повышению производительности?

function extract_emails($str){
// This regular expression extracts all emails from a string:
$regexp = '/([a-z0-9_\.\-])+\@(([a-z0-9\-])+\.)+([a-z0-9]{2,4})+/i';
preg_match_all($regexp, $str, $m);

return isset($m[0]) ? $m[0] : array();
}

$Email = extract_emails($gcv_response);

if (!empty($Email))
{
$Email = reset($Email);
}
else
{
$Email = 'NULL';
}

Текст OCR 1: «ALGEN MARINE PTE LTD Специалист в области противопожарной безопасности и техники безопасности Филип Ченг Помощник менеджера по продажам 172 Tuas South Avenue 2, West Point Bizhub, Сингапур 637191 Электронная почта: philip @ algen.comsg Веб-сайт: www.algen.comsg Тел: ( 65) 6898 2292 Факс: (65) 6898 2202 (65) 6898 2813 HP: (65) 9168 9799 »

Результат от запуска вышеуказанного кода = NULL; Желаемый результат: [email protected]

Текст OCR 2: «Аллан Лим Йи Чиан Главный исполнительный директор Alpha Biofuels (S) Pte Ltd LHCCBNFLN FR2 a mobile 9790 3063 тел. 6264 6696 факс 6260 2082 C # 01-05, 2 Tuas South Ave 2 Сингапур 637601 tang. Steve. Eric @ alphabiofuels.sg www.alphabiofuels.sg »

Результат от запуска вышеуказанного кода = NULL; Желаемый результат: [email protected];

0

Решение

Две проблемы, с которыми вы столкнулись, заключались в том, что вы не преобразовывали свой код в нижний регистр, а во-вторых, вы не рассмотрели сценарий пробелов, встречающихся в вашем коде. Я пытался охватить их, но вы должны изменить в соответствии с вашими требованиями.

function extract_emails($str){
// This regular expression extracts all emails from a string:
$regexp = '/(([a-z0-9_\-])+\.\\s?)?/([a-z0-9_\.\-])+\\s?\@(([a-z0-9\-])+\.)+([a-z0-9]{2,4})+/i';
//$regexp = '/(([a-zA-Z0-9_\-])+\.\\s?)?/([a-zA-Z0-9_\.\-])+\\s?\@(([a-z0-9\-])+\.)+([a-z0-9]{2,4})+/i';//for using uppercase letters.

preg_match_all($regexp, strtolower($str), $m);

return isset($m[0]) ? $m[0] : array();
}

$Email = extract_emails($gcv_response);

if (!empty($Email))
{
$Email = reset($Email);
}
else
{
$Email = 'NULL';
}
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]