You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP如何将Tesseract OCR多图识别结果合并为单条带换行消息发送到Telegram bot

解决方案

修改思路

核心逻辑是先统一收集所有识别错误信息,全部图片处理完成后再一次性发送到Telegram,避免每次遇到错误就单独发消息:

  1. 遍历图片前初始化一个空字符串,用来累计所有错误内容
  2. 循环内遇到错误时,将单条错误信息追加到累计字符串中,不执行发送操作
  3. 全部图片处理完成后,判断累计的错误字符串是否非空,若存在错误则调用一次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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 14:15:03