Python中拼接Microsoft Computer Vision识别的多行图像文本问题
解决多行文本拼接仅保留最后一行的问题
你当前代码的问题在于,line_str在每次遍历行时都会被新的行文本覆盖,而upload_title_str = line_str是在遍历完所有行后才赋值,自然只能拿到最后一行的内容。之前尝试join或+=没成功,大概率是因为初始化字符串/列表的位置不对(比如放到了循环内部,每次循环都会重置)。
方案一:字符串累加(适合少量文本)
初始化一个空字符串,在遍历每一行时将文本追加进去,可根据需求添加分隔符(比如换行、空格):
if read_result.status == OperationStatusCodes.succeeded: upload_title_str = "" # 提前初始化空字符串,放在循环外部 for text_result in read_result.analyze_result.read_results: for line in text_result.lines: line_str = line.text print(f"Line string: ", line_str) upload_title_str += line_str + "\n" # 用换行分隔每行,可替换为" "或其他分隔符 # 可选:移除最后多余的换行符 upload_title_str = upload_title_str.rstrip("\n") print(f" Upload Title String: {upload_title_str}")
方案二:列表收集后join(高效处理大量文本)
用列表存储每行文本,最后用join拼接,这种方式比字符串累加更高效(字符串是不可变类型,累加会频繁创建新对象):
if read_result.status == OperationStatusCodes.succeeded: line_list = [] # 初始化列表存储所有行文本 for text_result in read_result.analyze_result.read_results: for line in text_result.lines: line_str = line.text print(f"Line string: ", line_str) line_list.append(line_str) # 用换行符拼接所有行,可替换为" "等其他分隔符 upload_title_str = "\n".join(line_list) print(f" Upload Title String: {upload_title_str}")
内容的提问来源于stack exchange,提问作者user615525
相关产品推荐
相关产品推荐

