介绍
我尝试使用AWS Textract
从图像中提取文本
开发环境
- Windows 10
- 水蟒
- Python 3.6
- OpenCV 4.4.0
- awscli v2
介绍
1。安装awscli
通过参考在Windows
上安装,更新和卸载AWS CLI版本2来安装AWSCLIV2.msi
2。从AWS控制台在IAM中生成访问密钥
3。在命令提示符
上设置awscli
输入生成访问密钥时获得的访问密钥和秘密访问密钥。
对于默认的区域名称,请指定可以使用Textract的ap-south-1(亚太孟买)。
输出格式为json。
1 2 3 4 5 | $ aws configure AWS Access Key ID [None]: XXXX AWS Secret Access Key [None]: XXXX Default region name [None]: ap-south-1 Default output format [None]: json |
- 地区和区域
- 配置文件和凭证文件设置
3。从"添加IAM权限"中添加策略" AmazonTextractFullAccess"
4。打开anaconda提示符并创建一个Python 3.6环境。
1 2 | $ conda create -n py36 python=3.6 $ conda activate py36 |
5。安装库
1 2 | $ pip install boto3 $ pip install opencv-python |
6。让我们运行
下面的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | import boto3 import cv2 import os.path def process_text_analysis(image): client = boto3.client('textract') image_data = cv2.imencode(".png", image)[1].tostring() response = client.analyze_document(Document={'Bytes': image_data}, FeatureTypes=["TABLES", "FORMS"]) blocks = response['Blocks'] return blocks def draw_blocks(image, blocks): height, width = image.shape[:2] draw = image.copy() for block in blocks: if block['BlockType'] == "WORD": vertices = [(int(width * block['Geometry']['Polygon'][i]['X']), int(height * block['Geometry']['Polygon'][i]['Y'])) for i in range(len(block['Geometry']['Polygon']))] cv2.putText(draw, block['Text'], vertices[0], cv2.FONT_HERSHEY_PLAIN, 1, (255, 255, 255), 1, cv2.LINE_AA) cv2.rectangle(draw, vertices[0], vertices[2], (0, 255, 0)) return draw filename = "338px-Atomist_quote_from_Democritus.png" image = cv2.imread(filename, cv2.IMREAD_COLOR) blocks = process_text_analysis(image) print("Blocks detected: " + str(len(blocks))) draw = draw_blocks(image, blocks) cv2.imshow("draw", draw) cv2.waitKey(0) |
<表格>
tr>
header>
<身体>
td>tr>
tbody>
table>
感谢您的辛勤工作。