◆甘肅省秦安縣第一中學 魏鵬飛
“簡單人工智能應用模塊開發”是高中信息技術課程選擇性必修模塊4“人工智能初步”中的重要組成部分。根據新課標的要求,我通過設計制作簡單的人工智能項目,讓學生親歷利用人工智能解決問題的過程。
本文以“圖片文字提取工具”的設計與實現過程為例,提出“高中人工智能項目制作教學策略”(以下簡稱“策略”):以解決現實情境中的真實問題為導向,采用項目式學習模式,增加學習的探究性與趣味性;通過調用百度接口,使學生繞過人工智能核心算法的學習,降低學習難度;弱化學生對核心算法的學習,強調學生解決問題的思路和方法,有利于學生問題解決能力、計算思維能力以及創新能力的培養。
創設真實的問題情境引發學生深度思考,是開展項目式學習的首要環節,也是尤為重要的一步。設定的問題情境應貼近學生的現實生活,能引發學生思考,激發學生的學習興趣,繼而以興趣為驅動,主動開展探究活動。
人們時常需要提取圖片中的文字,但目前使用專業的圖片文字提取工具大多需付費,百度、科大訊飛等免費使用接口缺乏統一的用戶界面,只得依靠其提供的代碼調用接口。這種缺乏界面的操作方式對普通用戶不太友好。
基于此,我讓學生通過所學的Python 知識并結合百度接口框架,設計制作了一款用于解決上述問題的工具。創設問題的理由如下:
1.文字識別是人工智能應用的一個領域,符合教育主題;
2.提取圖片中的文字是學生在學習和生活中經常遇到的問題,易激發學生的學習興趣;
3.學生在提取圖片中的文字失敗的情況下,若能利用自己制作的工具成功提取文字,能增強自信心和榮譽感。
項目的功能通常隱含于真實的問題情境中,教師應引導學生通過分析問題、剔除無關項、保留關鍵點,最后形成可視化項目功能思維導圖。

圖1 圖片文字提取工具的思維導圖
結合本項目的教學案例,圍繞問題情境組織學生開展探究活動,最后將可視化項目功能分為選擇圖片類型、打開圖片、加載圖片、識別文字、顯示文字、提取文字,形成圖片文字提取工具的思維導圖。
“策略”以項目式學習為主,教學活動的開展以學生為中心,教師是教學活動的組織者、引導者和幫助者。在開展項目式學習中,由于項目具有開放性、綜合性和復雜性等特點,學生在實踐過程中難免會遇到知識盲區,需要教師為學生提供相關的學習支架(包括學習資料和技術指導),保證項目的有序開展。
以“圖片文字提取工具”項目為例。在開展項目式學習前,學生首先需熟練掌握Python 編程語言中的內置庫Tkinter,因為它是制作用戶交互界面必須具備的基礎知識。然而Tkinter 庫中方法繁多,且每種方法都有諸多屬性,學生易混淆或遺忘。這時,我會教學生“Lable”(標簽)、“Entry”(輸入框)、“Button”(按鈕)、“Text”(多行文本框)等使用方法。我還提供了包括注冊、登陸、選擇文字識別、創建應用以及自動生成賬號等調用百度接口的方法,其中自動生成的賬號包含AppID、APIKey、Secret Key 三部分內容,其賬號列表具體內容如圖2 所示。

圖2 文字識別賬號列表
在項目界面設計與實現中,如何設定與獲取輸入類控件的值也是難點之一。我在教學中發現,學生經常在此類問題上犯錯。可基于控件的使用方法制作一個簡單的項目,以學習資源的形式提供給學生,讓學生在反復學習與使用過程中,逐漸熟練其具體用法,從而達到知識的學習與重構,實現教學難點上的突破。
比如:簡單項目“用戶登錄界面”的實現過程就要用到文本框值的綁定、初始值的設定、輸出值的提取等知識。將該項目以學習支架的形式提供給學生,方便其在使用相關控件時查找資源,這不僅有利于培養學生的自主能力,還能減少教師的工作量。
以“圖片文字提取工具”為例,學生根據教師提供的學習支架,結合項目要實現的功能,設計制作主界面。用到的控件及其功能如下:“Lable”(標簽)——用于顯示靜態的文本信息及其圖片的顯示信息;“Combobox”(下拉列表框)——用于顯示要選擇的圖片類型;“Button”(按鈕)——用于人機交互,發送和接受交互信息;“Text”(多行文本框)——用于識別文字的顯示。

圖3 主界面運行效果
高中階段,基于程序設計培養學生的計算思維應聚焦在算法設計上,而并非某種語言或程序設計上。利用計算機解決問題,編程語言只是工具,程序設計只是手段,而算法才是靈魂。
一個好的算法不僅需要有強大的可讀性和可移植性,還應考慮其時間和空間的復雜性,即程序的執行效率。這種高度不是設計幾個算法或編制一個程序就能達到的,需在教師的指導下通過長期訓練形成。

圖4 學生分組開展項目式學習
如果說算法是解決問題的方法和步驟,那么編程就是通過某種編程語言將算法轉化為程序,實現某種特定功能的過程。兩者最大的區別在于,算法不能直接被計算機執行,而程序可以。
以“圖片文字提取工具”的編程實現過程為例,將整個項目封裝在一個名叫“Image_recognition”的類中,類方法又包含“openfile_path(self)”(打開圖片)、“get_file_content”(讀取圖片)、“showidentify_result”(文字識別)、“copy_text”(文字提取)等功能模塊。
項目采用單元測試與集成測試結合的測試方法。
在程序編制過程中采用單元測試,即對每個函數及其實現的功能進行測試。這是在編制程序早期發現語法和語義錯誤的較好辦法。
程序編寫完成后,采用集成測試的方法對系統的運行及其識別情況進行測試。在具體測試過程中,分別選取5 張圖片,對每一種識別類型進行測試用例,其文字識別率超過90%,基本達到使用要求。
然而,項目在實現基本功能的情況下還存在一些缺陷:系統每次只能加載一張圖片進行識別,對多張圖片的識別效率較低;由于項目文字識別部分是調用百度接口來實現的,受網絡或其他使用限額的限制,時常出現識別錯誤的情況。這些都是我后期需要改進的地方。