本文在AI New Media Qubit(公共帐户ID:QbitAI)的授权下转载。如需转载,请联系来源。是``表兄弟和表兄弟''还在担心大量PDF文件中的表格吗?看看百度,互联网上有很多用于提取PDF表单的工具,但它们都仅支持文本格式的PDF。但是扫描的图像表呢?不用担心,使用深度神经网络来识别和提取表的开源工具可以为您提供帮助。与图片兼容,准确性高,并且不占用本地计算资源,这样的实用工具值得您拥有。测试示例如果在输入的PDF文件中检测到表格,该模型将在边框中标记表格边界:然后,表格数据将转换为Panda数据框以方便后续处理:怎么样,是否非常实际的? ?如何使用这个工具?使用姿势来详细解释神经网络算法,而不占用本地计算资源?是的,您没听错,该工具的所有代码都可以在Google Colab上运行。换句话说,您可以使用Colab云资源来完成培训和推断,而无需本地安装。该工具使用的深度神经网络是Keras-RetinaNet。首先,必须在Colab上安装Keras-RetinaNet。它可以通过以下一行代码完成:git clone https://github.com/fizyr/keras-retinanet和必要的安装库:pip install .python setup.py build_ext —;首先就地培训Keras-RetinaNet识别表或建立一个培训数据库。这里使用Colab工具PDF2Img将PDF文件转换为JPG格式,以进行算法学习。然后将转换后的图片保存在“图像”文件夹中。接下来,您需要手动标记训练数据。在这里,建议使用在线标签工具makesense.ai。将XML注释文件保存在注释文件夹中,创建用于培训和测试的PDF文件列表,并将该列表导入train.txt和test.txt。接下来,克隆Github项目https://github.com/ferrygun/PDFTableExtract并安装beautifulsoup。运行以下命令以将PASCALVOC格式转换为Keras-RetinaNet所需的格式:python build_logos.py运行上述命令后,您将获得retinanet_classes.csv,retinanet_test.csv和retinanet_train.csv。在retinanet_classses.csv中,由于只能识别PDF文档中的表,因此只有一个类,即类0。如果在标记过程中添加诸如页眉和页脚之类的标签,则可以相应地获得多个类。文件和文件夹结构的完整列表:然后,将retinanet_classes.csv,retinanet_test.csv,retinanet_train.csv,train.txt和test.txt导入keras-retinanet的根文件夹中:接下来,运行Colab TrainOCR,您可以调整根据要训练的JPG文件的数量训练的次数。训练完成后,您将获得体重文件output.h5,下载此文件并将其保存到本地主机。该文件将在以后用于运行测试。这里要注意的一件事是,在Colab中,文件已上传到Git,并且已克隆Git。在运行测试之前,您还需要安装必要的库来处理PDF文件。 PyPDF2是一个python工具库,可以提取文档信息,裁剪页面等。使用以下命令安装该库:pip install PyPDF2 Camelot是一个专用于解析PDF页表的python库。使用以下命令安装此库:pip install camelot-py [cv] PDF2IMG是将Python转换为PIL Image对象的python库。使用以下命令安装此库:pip install pdf2imag在运行预测之前,您需要使用从训练中获得的权重文件output.h5加载模型,并从retinanet_classes.csv定义标签类0。 model_path =& lsquo; output.h5& rsquo; model = models.load_model(model_path,b骨干名称=’ resnet50’)labels =& lsquo; retinanet_classes.csv’ LABELS = open(labels)。 read()。strip()。split(& rsquo;)LABELS = {int(L.split(& lsquo;,& rsquo;)[1]):L.split(& lsquo ;,& rsquo;)[0] for LABELS} print(LABELS){0:& lsquo; tabel& rsquo;},然后以npimport cv2import matplotlib.pyplot作为pltimage_path = imgfname#image = cv2.imread(image_path)image = read_image_bgr(image_path)image = cv2.cvtColor(image,cv2.COLOR_BGR2RGB)运行测试导入numpy图像。 copy()output = cv2.cvtColor(output,cv2.COLOR_BGR2RGB)print(output.shape)#行(高度)x列(宽度)x颜色(3) image)image = np.expand_dims(image,axis = 0)#检测输入图像中的对象,并校正图像比例(框,分数,标签)= model.predict_on_batch(image)boxes / = scaleconfidence = 0.2,来自Google。 colab.patches将cv2_imshowimport matplotlib.pyplot导入为p