PHP如何将Tesseract OCR多图识别结果合并为单条带换行消息发送到Telegram bot
解决方案
修改思路
核心逻辑是先统一收集所有识别错误信息,全部图片处理完成后再一次性发送到Telegram,避免每次遇到错误就单独发消息:
- 遍历图片前初始化一个空字符串,用来累计所有错误内容
- 循环内遇到错误时,将单条错误信息追加到累计字符串中,不执行发送操作
- 全部图片处理完成后,判断累计的错误字符串是否非空,若存在错误则调用一次Telegram接口发送所有内容
完整修改后代码
$dir = "images/*.jpg"; $images = glob( $dir ); // 初始化空变量收集错误信息 $errorContent = ""; $apiToken = $bot_token; // 提前赋值你的bot token $chatId = $chat_id; // 提前赋值你的接收消息chat_id foreach( $images as $image): $result = (new TesseractOCR($image))->run(); $info = pathinfo($image); $file_name = basename($image,'.'.$info['extension']); $Name = str_replace("_"," ", $file_name); $msg = "Error Occurred"; if($result === $msg) { // 追加错误信息到累计变量,每条占一行 $errorContent .= $Name . " - Says - ".$msg."\n"; } else { $msg = $Name . " - Good! \n"; echo $msg."</br>"; } endforeach; // 全部图片处理完成后,存在错误则统一发送 if (!empty($errorContent)) { $data = [ 'chat_id' => $chatId, 'text' => $errorContent ]; $response = file_get_contents("https://api.telegram.org/bot$apiToken/sendMessage?" . http_build_query($data) ); }
补充说明
默认配置下Telegram即可正常渲染换行效果,实现每条错误单独占一行的展示需求。如果错误内容总长度超过4096字符(Telegram单条文本消息长度上限),可自行添加逻辑拆分多条发送。
内容的提问来源于stack exchange,提问作者Ahmed Mohammed
相关产品推荐
相关产品推荐

