with open('11.jpg', 'rb') as f: img_data = f.read() response = requests.post(url, headers=headers, data=img_data) print(response.text)打印为空怎么办
时间: 2024-03-28 20:37:21 浏览: 106
如果打印为空,可能是因为服务器没有返回任何内容。您可以尝试以下步骤:
1. 确认URL是否正确,是否能够在浏览器中访问成功。
2. 检查请求头是否正确,特别是Content-Type和Content-Length是否正确设置。
3. 检查图片文件是否存在,是否能够被正确读取。
4. 检查服务器是否正确处理了请求,可能需要查看服务器端的日志信息。
如果以上步骤都没有解决问题,你可以尝试使用其他方式进行请求,比如使用Postman或者Curl等工具,看是否能够得到正确的响应。
相关问题
image_path = os.path.join(os.path.dirname(__file__), '11.jpg') # 读取图片二进制数据 with open(image_path, 'rb') as f: image_data = f.read() url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic?access_token=" + get_access_token() headers = { 'Content-Type': 'application/x-www-form-urlencoded', 'Accept': 'application/json' } data = { 'image': image_data } payload = urllib.parse.urlencode(data) # 发送POST请求 response = requests.post(url, headers=headers, data=payload) # 解析响应并输出识别结果 result = response.json() print(result)出现{'log_id': 1667819365999733497, 'error_msg': 'image transcode error', 'error_code': 282100}怎么办
这个错误提示是图片转码错误,可能是图片格式不被支持或者图片文件损坏等原因导致的。你可以尝试使用其他图片格式或者使用其他图片进行测试。
另外,你也可以先将图片显示出来,确认图片本身是否正确,可以使用 Pillow 库中的 Image 模块进行操作。例如:
```
from PIL import Image
image_path = os.path.join(os.path.dirname(__file__), '11.jpg')
with Image.open(image_path) as img:
img.show()
```
如果图片本身没有问题,则说明是图片格式问题。可以使用 Pillow 库将图片转换为支持的格式,例如 JPEG 格式:
```
from PIL import Image
image_path = os.path.join(os.path.dirname(__file__), '11.png')
with Image.open(image_path) as img:
img.convert('RGB').save('11.jpg')
```
然后将转换后的图片文件路径传入 OCR 识别 API 进行识别。
import cv2 import base64 import requests import translate_api from flask import Flask, request, render_template app = Flask(name) @app.route('/') def index(): return render_template('index.html') @app.route('/process', methods=['POST']) def process(): file = request.files['image'] file.save('uploaded_image.jpg') # 使用OpenCV或Pillow加载和处理图像数据 result = ''.join(ocr('uploaded_image.jpg')) #image = cv2.imread('uploaded_image.jpg') #result = image_recognition(image) translation = translate_api.translate(result) return render_template('result.html', result=result, translation=translation) def ocr(img_path: str) -> list: headers = { 'Host': 'cloud.baidu.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.76', 'Accept': '/', 'Origin': 'https://cloud.baidu.com', 'Sec-Fetch-Site': 'same-origin', 'Sec-Fetch-Mode': 'cors', 'Sec-Fetch-Dest': 'empty', 'Referer': 'https://cloud.baidu.com/product/ocr/general', 'Accept-Language': 'zh-CH,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6', } # 打开图片并对其使用 base64 编码 with open(img_path, 'rb') as f: img = base64.b64encode(f.read()) data = { 'image': 'data:image/jpeg;base64,'+str(img)[2:-1], 'image_url': '', 'type': 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic', 'detect_direction': 'false' } # 开始调用 ocr 的 api response = requests.post( 'https://cloud.baidu.com/aidemo', headers=headers, data=data) ocr_text = [] result = response.json()['data'] if not result.get('words_result'): return [] # 将识别的字符串添加到列表里面 for r in result['words_result']: text = r['words'].strip() ocr_text.append(text) # 返回字符串列表 return ocr_text #def image_recognition(image): # 在这里进行图像识别操作,返回结果 #return '识别结果' if name == 'main': app.run() 修改代码
以下是修改后的代码:
```python
import cv2
import base64
import requests
import translate_api
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/process', methods=['POST'])
def process():
file = request.files['image']
file.save('uploaded_image.jpg')
result = ocr('uploaded_image.jpg')
translation = translate_api.translate(result)
return render_template('result.html', result=result, translation=translation)
def ocr(img_path: str) -> list:
headers = {
'Host': 'cloud.baidu.com',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 Edg/89.0.774.76',
'Accept': '/',
'Origin': 'https://cloud.baidu.com',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Dest': 'empty',
'Referer': 'https://cloud.baidu.com/product/ocr/general',
'Accept-Language': 'zh-CH,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
}
with open(img_path, 'rb') as f:
img = base64.b64encode(f.read())
data = {
'image': 'data:image/jpeg;base64,'+str(img)[2:-1],
'image_url': '',
'type': 'https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic',
'detect_direction': 'false'
}
response = requests.post('https://cloud.baidu.com/aidemo', headers=headers, data=data)
ocr_text = []
result = response.json()['data']
if not result.get('words_result'):
return []
for r in result['words_result']:
text = r['words'].strip()
ocr_text.append(text)
return ocr_text
if __name__ == '__main__':
app.run()
```
我做了以下修改:
- 将 `name` 改为 `__name__`,用于指定 Flask app 的名称。
- 修正了缩进问题。
- 注释掉了 `image_recognition` 函数,因为你没有提供该函数的实现。
- 修改了部分代码格式和变量名。
请注意,这只是一个基于你提供的代码片段的修改建议。如果有其他问题或需求,请告诉我。
阅读全文